1、工廠方法模式意圖:
定義乙個用於建立物件的介面,讓子類決定例項化哪乙個類。factory method使乙個類的例項化延遲到其子類。
工廠方法模式用於為屬於同一類別的產品定義對應的具體工廠類,並將具體工廠類開放給使用者類來使用。
2、應用場景:
考慮乙個榨汁機的應用場景。榨汁機可以用來製作蘋果汁、西瓜汁、橘汁等,即榨汁機可以用來製作水果汁。但是,夏天的冷飲店中,為了提高製作水果汁的效率和防止味道互串等情況,可能需要分別準備三個水果榨汁機,分別用來生產蘋果汁、西瓜汁、橘汁等。
3、工廠方法模式類圖:
角色:
協作:
4、適用性:
工廠方法模式跟工廠模式類似,其中工廠方法模式適合於構造同屬於同乙個類別的不同產品,所有的產品屬於同乙個系列中。
5、例項:
5.1 例項類圖:
說明:店員(waiter)使用不同的榨汁機來製作不同的水果汁,進而銷售給顧客。
5.2 waiter類:
除了使用者類waiter類之外,其他的類定義明了,故僅提供使用者類。
16、特點public
class
waiter
89 }
【注:開閉原則——軟體開發應該面向擴充套件,而非修改。】
7、簡單工廠vs工廠方法
簡單工廠:不滿足開閉原則。在需要新增新型別產品時,除新增新產品類,還需要修改簡單工廠模式中的工廠類,為工廠類中建立物件的靜態方法新增新的選擇項。
工廠方法:滿足開閉原則。在需要新增新型別產品時,除新增新產品類,還需要繼承抽象工廠類,建立新型別產品對應的工廠類。
建立型 工廠方法模式
抽象產品 定義產品的介面,產品物件的公共父類 具體產品 實現產品的介面 抽象工廠 宣告工廠方法,返回乙個產品 具體工廠 抽象工廠的子類,客戶端呼叫,返回乙個具體的例項 需求 日誌記錄器可以通過很多途徑儲存日誌,使用者可以修改配置檔案,靈活的更換日誌記錄的方式,為了更好的封裝記錄器的初始化過程,並保證...
設計模式 建立型 工廠方法模式
建立性模式有五種 1.工廠模式 簡單工廠模式 經常被用到,不屬於gof23種設計模式 工廠方法模式 抽象工廠模式 2.建造者模式 3.原型模式 4.單例模式 工廠方法 factory method 模式的意義是定義乙個建立產品物件的工廠介面,將實際建立工作推遲到子類當中。核心工廠類不再負責產品的建立...
建立型設計模式 工廠方法模式
工廠方法模式解決的是,不像簡單工廠似的,要增加產品必須改工廠類的 實現思路是,1.抽象工廠類 2.抽象產品類 3.具體工廠類 繼承抽象工廠類 4.具體產品類 繼承抽象產品類 5.外界呼叫。1.抽象工廠類 建立抽象工廠類 abstract class factory2.抽象產品類 建立抽象產品類 ab...