設計原則
要依賴抽象,不要依賴具體類
簡單工廠模式雖然簡單,但存在乙個很嚴重的問題。當系統中需要引入新產品時,由於靜態工廠方法通過所傳入引數的不同來建立不同的產品,這必定要修改工廠類的源**,將違背「開閉原則」,如何實現增加新產品而不影響已有**?工廠方法模式應運而生,本文將介紹第二種工廠模式——工廠方法模式。
工廠方法模式(factory method pattern)又稱為工廠模式,也叫虛擬構造器(virtual constructor)模式或者多型工廠(polymorphic factory)模式,它屬於類建立型模式。
在工廠方法模式中,工廠父類負責定義建立產品物件的公共介面,而工廠子類則負責生成具體的產品物件,這樣做的目的是將產品類的例項化操作延遲到工廠子類中完成,即通過工廠子類來確定究竟應該例項化哪乙個具體產品類。
在簡單工廠模式中只提供乙個工廠類,該工廠類處於對產品類進行例項化的中心位置,它需要知道每乙個產品物件的建立細節,並決定何時例項化哪乙個產品類。簡單工廠模式最大的缺點是當有新產品要加入到系統中時,必須修改工廠類,需要在其中加入必要的業務邏輯,這違背了「開閉原則」。
此外,在簡單工廠模式中,所有的產品都
抽象工廠模式(工廠方法模式)
工廠方法模式是在簡單工廠模式的基礎之上將建立具體產品類的工廠進一步抽象,使產品的建立不依賴具體的工廠,只需要依賴抽象工廠,後續如果要新增新的產品和工廠,只需要實現該抽象工廠的介面即可。建立抽象工廠和產品 public inte ce productfactory public inte ce pro...
C 設計模式 工廠方法模式 抽象工廠模式
抽象工廠模式主要有四個關鍵元素 優點 缺點 產品與工廠對應,所以增加乙個產品必須對應的增加乙個工廠。工廠模式說明見最後擴充套件 抽象產品 ifndef product h define product h class product virtual void init 0 virtual int n...
簡單工廠模式 工廠方法模式 抽象工廠模式
簡單工廠模式 簡單工廠模式並不是23種設計模式中的,但是在實際的應用中卻經常使用。uml圖 簡單工廠模式的建立目標,所有建立的物件都是充當這個角色的某個具體類的例項。在這個模式中,工廠類是整個模式的關鍵所在。它包含必要的判斷邏輯,能夠根據外界給定的資訊,決定究竟應該建立哪個具體類的物件。使用者在使用...