Abstract Factory(抽象工廠)

2021-08-22 09:13:30 字數 1029 閱讀 2163

抽象工廠,最簡單的設計模式,相信大家每天都在使用。

通俗點介紹,先從工廠模式開始。工廠模式,很簡單,工廠就生產東西的地方。這裡當然是生產物件了。在遙遠原始社會,我們需要乙個物件,都是new出來的,相當與自己動手做的。

比如 要一條魚 fish f1=new fish();一條魚就來了,現在有了工廠,魚就來的容易了,fish f1=factory.getfish();看魚來的容易多了,不用去new了,問factory要(getfish())。簡單吧,相信你以前也用過,只不過不知道叫工廠模式罷了。

好了,接下來解釋一下抽象工廠,顧名思義,這個工廠是抽象的,上面我們看到的factory是乙個物件(或者靜態類),他是我們編寫用來產生魚的。

public static class factory

} 隨便寫下(有語法錯誤,別怪我哦),抽象工廠中,這個factory是個抽象類,也不是具體的,factory我們把他當作乙個市場,可能是菜市場factorycai、花鳥市場factoryniao、也可能是釣魚場factorydiao,反正是不確定的,現在我的需求還是一條魚,不同的市場給出不同的魚,按照原始社會做法,應該是

fish f1=factorycai.getfish();//我要一條黃魚

fish f2=factoryniao.getfish();//我要一條金魚(鯨魚,買不起)

fish f3=factorydiao.getfish();//我要一條我釣得起來的魚

既然factorycai,factoryniao,factorydiao都是繼承於factory,那為什麼不寫fish f1=factory.getfish(x);//到底是返回什麼魚,由傳入的引數x來決定,

這就是抽像工廠,簡單吧,呵呵。

為什麼要寫成抽象工廠的模式,我想說明一下:

1.可以少改**,我一向認為只要改了**就需要花大量的成本(時間、金錢)進行測試...

2.能隔離要生成的具體物件,也就是松耦合。這樣做的好處是,可以自由改動、增加這些具體的類(factorycai)。

完整**不想寫了,抽象工廠模式實在太簡單了,實在有問題發我email拉。

抽象工廠,Abstract Factory

抽象工廠的定義是 提供乙個介面用於建立一系列相關或依賴的物件,而不需要指定具體的類。其uml類圖的示例如下 在這個模式中,參與者包括 實現 public inte ce abstractfactory public class concretefactorya abstractfactory pub...

設計模式 AbstractFactory

回想工廠方法模式,大廳可能有多種風格,a和b的widget也可能是不同組別不同人進行開發。這種情況下乙個工廠類顯然對 結構,程式可維護性有影響。我們可以建立多個widgetfactory分別生成a,b類的widget。abstractfactory.h ifndef abstractfactory ...

抽象工廠(Abstract Factory)

抽象工廠 abstract factory 抽象工廠,提供乙個建立一系列相關或相互依賴物件的介面,而無需指定它們具體的類。別名 kit結構 參與者 abstractfactory 宣告乙個建立抽象產品物件的操作介面。concretefactory 實現建立具體產品物件的操作。abstractprod...