定義:
為建立一組相關或相互依賴的物件提供一組介面,而且無需指定它們的具體類。
抽象工廠模式是工廠模式的公升級版本,因為它應對的是更加複雜的業務,即當有多個業務品種、業務分類時,通過抽象工廠模式產生需要的物件是一種非常好的解決方式。
由於抽象工廠類較為複雜,我覺得使用乙個具體的例子,更能形象的表達這個模式的思想,而且容易理解,這裡畫類圖就不使用通用的類圖了,模擬乙個跨windows和linux平台的產品族的生產,這裡模擬的是生產記事本和畫圖軟體,跨兩個平台,可以把這個類圖看成乙個座標,橫軸是產品族,縱軸是產品線,工廠類生產的是具體的產品線上的產品。
實現**如下:
public abstract class notepadproduct
public abstract void dosomething();
}
public class notepadwin extends notepadproduct
}
public class notepadlinux extends notepadproduct
}
public abstract class drawpictureproduct
public abstract void dosomething();
}
public class drawpicturewin extends drawpictureproduct
}
public class drawpicturelinux extends drawpictureproduct
}
public abstract class abstractfactory
public class windowsfactory extends abstractfactory
@override
public notepadproduct createnotepad()
}
public class linuxfactory extends abstractfactory
@override
public notepadproduct createnotepad()
}
抽象工廠模式優點:
1、封裝性,工廠類,只知道工廠類是誰,就能創造乙個需要的物件,不需要關心具體的實現類。
抽象工廠模式的缺點:
最大缺點就是產品族的擴充套件非常困難。每增加乙個產品,抽象工廠類要修改,其實現類也要修改,嚴重違反了開閉原則。
設計模式學習筆記 抽象工廠模式
抽象工廠開始之前,我不得不先說一句,關於工廠方法,我以為不太常用來著。而實際上,想到當年在學校,老師在教三層的時候告訴我們,service 與 dao 層必須都要繼承自介面,並提供乙個實現類,只是神秘的一笑告訴我們,這對 有好處,然而一直到了學期結束也不知道有什麼好處。大概也不知道什麼時間,越寫越多...
設計模式筆記 抽象工廠模式
抽象工廠模式向客戶端提供乙個介面,使得客戶端在不必指定具體型別的情況下,建立多個產品族中的物件。本文採取的仍然是接著以前的那個快餐店的例子。現在,快餐店經常良好,逐漸發展壯大,為了適合不同地方人的飲食習慣,建立了兩大系列 相當於產品族 快餐,北方系列和南方系列。每個系列分別由乙個大廚掌勺。抽象工廠模...
設計模式筆記 抽象工廠模式
摘要 介紹了抽象工廠模式的基本概念,並給出了c 語言編寫的程式示例 工廠模式圖 抽象工廠模式向客戶端提供乙個介面,使得客戶端在不必指定具體型別的情況下,建立多個產品族中的物件。本文採取的仍然是接著以前的那個快餐店的例子。現在,快餐店經常良好,逐漸發展壯大,為了適合不同地方人的飲食習慣,建立了兩大系列...