****** factory(簡單工廠)/factory method(工廠方法)/abstract factory(抽象工廠)
其中sf是最簡單的,sf是fm的乙個簡化。fm中是由concrete creator來建立concrete product的,這樣工廠方法是由乙個介面來實現,使creator具有更強的擴充套件性。而sf則是直接用concrete creator來建立concrete product。不過,如果你的系統不是那麼複雜、不需要那麼多的擴充套件性的話,那麼用sf則更有優勢。不過,sf不是23個設計模式中的乙個,難道是不夠複雜?我想可能是缺乏擴充套件性吧,這個顯然不符合關閉-開放原則哦。
fm和af都是23dp中的。fm比sf更複雜一點,而af則比fm更負責。fm是對一類product進行create,af則是對一組product進行create。
fm
intent:
定義乙個用於建立物件的介面,讓子類決定例項化哪乙個類。factory method 使乙個類的例項化延遲到其子類。
適用性:
af
intent:
提供乙個建立一系列相關或相互依賴物件的介面,而無需指定它們具體的類。
適用性:
definition
abstract factory: creates an instance of severalfamiliesof classes
factory method: creates an instance of several derived classes
這幾個模式的乙個最重要的共同點就是利用了介面inte***ce的功能,根據liskov原則,我們可以用子類代替父類(這裡為inte***ce)。從而使設計不依賴於細節,只依賴於抽象(只依賴於inte***ce),從而我們可以通過在執行時確定具體的物件,在具體**中應用concrete product,從而達到了多型的目的。
好像沒什麼好說的了,感覺理解起來還是很清楚的,關鍵就是inte***ce的應用。恩
設計模式之工廠模式 3 抽象工廠模式
使用抽象工廠模式完成披薩案例 是乙個抽象工廠模式的抽象層 public inte ce absfactory public class bjfactory implements absfactory else if ordertype.equals pepper return pizza publi...
抽象工廠模式 設計模式3之抽象工廠模式
工廠方法模式中工廠只負責同類產品的生產。比如電視機工廠不應該生產汽車。然而現實生活中有很多綜合型的工廠,比如有些電視工廠不僅生產電視機,還會生產與之配套的機頂盒。那麼抽象工廠模式隨之誕生,這種模式將考慮多種型別產品的生產。我們總結下 工廠方法模式只考慮成產同一等級級的產品抽象方法模式考慮生產多等級的...
設計模式之3 抽象工廠模式
抽象工廠模式 之前我們在學習工廠模式中,如果要增加乙個產品,那麼就會同時增加乙個具體產品類和對應的具體工廠類,這會導致系統中的類數量成對的增加,加重系統的負擔。而對於有些場景下我們使用的是一系列的類,這個時候我們就可以考慮將一些相關的產品組成乙個產品 產品族 然後由同乙個工廠來統一生產。在工廠模式中...