設計模式GOF23 工廠模式

2021-07-15 20:01:09 字數 1683 閱讀 6346

簡單工廠模式(static factory method)是建立者模式的一種,是負責建立物件的模式。

工廠模式是為了實現建立物件和呼叫物件分離的需求。

簡單工廠用來生產同一等級結構中的任意產品。(對於新增的產品需要修改已有**)

工廠方法模式用來生產同意等級結構中的固定產品。(支援增加任意產品)

抽象工廠模式用來生產不同品種族的全部產品。(對於增加新的產品,無能為例,支援增加新的產品族)

當然是為了簡化操作,為了封裝型。為了把建立物件的邏輯和呼叫物件的邏輯分開來,對一些可能比較複雜的建立物件的操作進行封裝,隔離複雜性,也保持封裝性。工廠模式主要出於迪公尺特原則(最少知道原則)和開閉原則的考慮。

簡單工廠模式

建立乙個建立者物件(工廠factory),在這個物件中封裝建立物件的方法。至於物件的建立,可以通過介面來定義類的種類和一些必要的方法和引數,具體物件實現介面即可。

這樣做完成了對建立和呼叫的分離。但是這個方法有一些不足:只能在工廠建立已知的物件建立的方法,如果需要擴充套件,就需要修改原有的**,這樣違反了開閉原則。

下面是乙個簡單的小例子,用來方便理解

//建立物件的抽象,可以抽象物件的必要方法和變數

public

inte***ce

car

public

class

bydimplements

car public

void

stop()

}public

class

fawvolkswagen

implements

car public

void

stop()

}//建立的工廠

public

class

******factory

//簡單工廠將不同的物件建立方法放在同乙個類當中

public car createfawvolkswagen()

}

工廠模式

為每乙個物件建立建立者物件(工廠factory),在這個物件中封裝建立物件的方法。至於物件的建立,可以通過介面來定義類的種類和一些必要的方法和引數,具體物件實現介面即可。

這樣做完成了對建立和呼叫的分離,也可以在一定成都上擴充套件型更強。但是這個方法有一些不足:它會增加更多的類,需要更多的**,對於**的控制和管理不方便。

乙個簡單的例子方便理解

//建立物件的抽象,可以抽象物件的必要方法和變數

public

inte***ce

car

public

class

bydimplements

car public

void

stop()

}public

class

fawvolkswagen

implements

car public

void

stop()

}//byd的建立工廠

public

class

bydfactory

}//fawvolkswagen建立的工廠

public

class

fawvolkswagenfactory

}

設計模式GOF23 抽象工廠模式

抽象工廠模式 abstract factory 是建立者模式的一種,是一種負責建立物件的模式。抽象工廠算是工廠模式的一種,因為邏輯和實現相對複雜一些,所以在設計模式中不少說明都是分開說明的。抽象工廠也是為了實現物件建立和物件使用的分離。工廠模式雖然已經實現了這一需求,但是還是不夠徹底。比如 如果建立...

GOF23 設計模式 之工廠模式

工廠模式本質 例項化物件,工廠方法代替new操作 將實現類和建立物件統一管理和控制,將呼叫者和實現類解耦 工廠模式分為了三種 1,簡單工廠模式 最常用 對於新增產品 要修改 2,工廠方法模式 新增產品不用修改 複雜度高 3,抽象工廠模式 可以增加產品族,進行產品之間的搭配 一般用的少,框架可能會用到...

GOF23 設計模式

design patterns elements of reusable object oriented software 即後述 設計模式 一書 由 erich gamma richard helm ralph johnson 和 john vlissides 合著 addison wesley,...