1 前言
抽象工廠提供了一個接口,用於創建一系列有關聯或者相互依存的對象,而不必指定其具體類或其創建的細節。客戶端與從工廠得到的具體對象之間沒有耦合。
2 詳述
2.1 簡述
Client只知道AbstractFactory和AbstractProduct,每個工廠類中,結構與實際操作的細節按照黑箱對待。甚至產品也不知道誰將負責創建他們。只有具體工廠知道為客戶端創建什麼,如何創建。這個模式很多時候它都用工廠方法模式來實現。工廠方法把實際的創建過程推遲到重載它的子類中。
抽象工廠模式常與原型模式,單例模式和享元模式等其他設計模式一起使用。
2.2 抽象工廠與工廠方法的區別
抽象工廠:
(1)通過對象組合創建抽象產品;
(2)創建多系列產品;
(3)必須修改父類的接口才能支持新的產品。
工廠方法:
(1)通過類繼承創建產品;
(2)創建一種產品;
(3)子類化創建者並重載工廠方法以創建新產品。
2.3 類簇
類簇是基礎框架中一種常見的設計模式,基於抽象工廠模式的思想。它將若干相關的私有具體工廠子類集合到一個工友的抽象超類之下。例如:數 包含了各種數值類型的完整集合,如字符,整數,浮點數和雙精度數。這些數值類型是數的自己。所以NSNumber自然成為這些數子集的超類型(super-type)。
類簇是抽象工廠的一種形式。比如,NSNumber是一個高度抽象的工廠,而NSCFBoolean和NSCFNumber是具體工廠子類。
2.4 再次對比抽象工廠和工廠
抽象工廠被其多個具體工廠類型共有的抽象工廠類型。如果拋開“抽象”一詞,“工廠”通常是指“具體”工廠,而且,它也沒有工廠方法的意思。
有時候,一開始在設計中使用具體工廠,而其後將其重構為使用多個具體工廠的抽象工廠。
3 結語
以上是所有內容,希望對大家有所幫助。