簡單工廠模式(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,...