在簡單工廠模式中,建立類的工作都交給了工廠類來處理。這樣一來,假如專案非常龐大,工廠類就難以維護。那麼,可以通過將工廠抽象出來,形成乙個介面,具體的工廠類實現抽象類的介面。這樣一來,核心的工廠類可以不必負責產品的建立,僅負責定義具體工廠類必須實現的介面,形成乙個規範。這樣的好處是,可以使系統在不修改具體工廠角色的情況下引進新的產品。在這個模式中,工廠類和產品類往往可以依次對應。即乙個抽象工廠對應乙個抽象產品,乙個具體工廠對應乙個具體產品,這個具體的工廠就負責生產對應的產品。
抽象工廠(creator)角色:是工廠方法模式的核心,與應用程式無關。任何在模式中建立的物件的工廠類必須實現這個介面。
抽象產品(product)角色:工廠方法模式所建立的物件的超型別,也就是產品物件的共同父類或共同擁有的介面。
具體產品(concrete product)角色:這個角色實現了抽象產品角色所定義的介面。某具體產品有專門的具體工廠建立,它們之間往往一一對應。
舉例說明:
public inte***ce animalfactory
public class dogfactory implements animalfactory}
public class catfactory implements animalfactory}
public inte***ce animal
public class dog implements animal}
public class cat implements animal}
public class animalsound}執行結果:汪汪...
public class animalsound工廠方法經常用在以下兩種情況中:}執行結果:喵喵...
第一種情況是對於某個產品,呼叫者清楚地知道應該使用哪個具體工廠服務,例項化該具體工廠,生產出具體的產品 來。
第二種情況,只是需要一種產品,而不想知道也不需要知道究竟是哪個工廠生產的,即最終選用哪個具體工廠的決定權在生產者一方,它們根據當前系統的情況來例項化乙個具體的工廠返回給使用者,而這個決策過程這對於使用者來說是透明的。
工廠模式之二 工廠方法模式
工廠方法模式 乙個用於建立物件的介面,讓子類決定例項化哪乙個類。工廠方法使乙個類的例項化延遲到其子類。工廠方法克服了簡單工廠違反開發 封閉原則的缺點,既保持了封裝物件建立過程的優點。工廠方法模式實現時,客戶端需要決定例項化哪乙個工廠來實現運算類,選擇判斷的問題還是存在的,也就是說工廠方法把簡單工廠的...
設計模式系列之二 工廠方法模式
前言 前一篇博文中介紹了簡單工廠模式,這裡再介紹一下工廠方法模式。與簡單工廠很像,那麼兩者的區別是什麼呢?在這篇博文中,首先會簡單介紹一下工廠方法的使用方法,並對工廠方法模式進行簡單的小結。最後,將結合具體的例子對比簡單工廠模式與工廠方法模式,並對兩者的使用場景做乙個小小的歸納。背景 某公司開發了乙...
設計模式 建立型 工廠方法模式 多個工廠方法模式
多個工廠方法模式,屬於工廠方法模式中的一種。它是一種建立型模式。是對普通簡單工廠模式的改進,在普通工廠方法模式中,如果傳遞的字串出錯,則不能正確建立物件,而多個工廠方法模式是提供多個工廠方法,分別建立物件.public class gunfactory public igun getgunm4a1 ...