1.抽象工廠模式——是對產品角色的抽象,面對的問題是多個產品等級結構的系統設計,這是與工廠方法模式最大的區別(工廠方法模式面對的是乙個產品等級結構),如果使用多個工廠方法模式來實現,會導致相似的工廠方法的數目越來越多。
2.要建立乙個具體產品物件,需先指明產品等級結構(乙個產品系列button,textview,imageview等)和產品族(通常為系統環境因素),有幾個產品族,就有幾個具體工廠,每乙個具體工廠負責建立同乙個產品族,不同產品等級結構的產品。有多少個產品等級結構,工廠類裡就有多少個工廠方法。
3.適應場合:
(1)使用產品的客戶端不應當依賴於具體產品是如何建立的這些細節,對所有的工廠方法都是這樣的。
(2)有多個系列(產品族)的產品(產品等級結構)被使用。
圖中例項為unix產品族和windows產品族,button、text兩個產品等級結構,unixfactory負責建立unix系統下的控制項,windowsfactory負責建立windows下的控制項。
「開-閉」原則分析:(對擴充套件開放,對修改關閉)
對抽象工廠系統的擴充套件可以:
(1)新增新的產品族; 即新增新的具體工廠 類,不需要修改原有**;
(2)新增新的產品等級結構;即要新增新的工廠方法,要所有原有的具體工廠類都新增乙個工廠方法,違背了「開-閉」原則。
(1)如果只需要乙個具體工廠的例項可以使用單例模式。
(2)抽象工廠與具體工廠可以合併,返回具體的工廠。
設計模式學習筆記 抽象工廠模式
定義 為建立一組相關或相互依賴的物件提供一組介面,而且無需指定它們的具體類。抽象工廠模式是工廠模式的公升級版本,因為它應對的是更加複雜的業務,即當有多個業務品種 業務分類時,通過抽象工廠模式產生需要的物件是一種非常好的解決方式。由於抽象工廠類較為複雜,我覺得使用乙個具體的例子,更能形象的表達這個模式...
設計模式學習筆記 抽象工廠模式
抽象工廠開始之前,我不得不先說一句,關於工廠方法,我以為不太常用來著。而實際上,想到當年在學校,老師在教三層的時候告訴我們,service 與 dao 層必須都要繼承自介面,並提供乙個實現類,只是神秘的一笑告訴我們,這對 有好處,然而一直到了學期結束也不知道有什麼好處。大概也不知道什麼時間,越寫越多...
Unity學習筆記 設計模式 工廠 抽象工廠
工廠 多選一 功能 據不同的條件產生不同的物件 這些不同的物件型別不同,卻具有共同的父類 案例 去餐館 選擇吃的 工廠類using system using system.collections.generic using system.linq using system.text namespac...