前面介紹了簡單工廠模式和工廠方法模式。但是這兩種模式對應的工廠結構過於單一(乙個工廠只能生產一種產品),不適應與一些複雜的工廠等級結構,強行使用會導致工廠類的職責過於繁重,違反單一職責原則。因此我們推出抽象工廠模式。
a、b工廠分別生產聯想和戴爾品牌的筆記本,其元件包括主機板、螢幕、cpu、電源等,為了簡化問題,我們定義筆記本的元件包含三種:主機板、螢幕、電源,請設計程式模擬客戶下單某一品牌的電腦。
根據前面學習的工廠模式,我們很容易就可以設計出實現方案,這裡我們假設使用工廠方法模式來實現。
這裡我們只設計出uml
類圖,**就省略了,畢竟工廠方法模式較為簡單,而且不是本文的重點。工廠方法的核心就是每種產品定義乙個單獨的工廠類進行建立。場景中有兩種品牌、三類產品,所以一共有2*3=6
種不同的產品,因此對於6種不同的工廠類。
在使用抽象工廠模式改進前,我們先了解兩個重要的概念
抽象工廠模式中,具體工廠不再是只建立一種產品,而是建立乙個產品族,這樣可以大大減少類的數量,簡化系統複雜度。
定義具體產品類和具體工廠類
客戶端測試
public
static
void
main
(string[
] args)
對於這種產品數量龐大,產品間存在相互關聯關係的業務場景,抽象工廠模式就登場了。
抽象工廠模式(****** factory pattern):是一種為訪問類提供乙個建立一組相關或相互依賴物件的介面,且訪問類無須指定所要產品的具體類就能得到同族的不同等級的產品的模式結構。抽象工廠模式是工廠方法模式的公升級,工廠方法模式只生產一種型別的商品,而抽象工廠模式則可以生產多個等級的產品。
抽象工廠模式角色與工廠方法角色類似,一般包含如下角色
缺點
設計模式(二)抽象工廠模式
以下所有資料位偽造 o o哈哈 業務邏輯 以同一系統適應美國 中國的工資計算方式,計算公式是 到手的工資 基本工資 獎金 稅收 如中國的工資計算是 到手的工資 基本工資 獎金 稅收 稅收 基本工資 5 獎金 企業自己的計算方式 美國的工作計算是 稅收 基本工資 10 獎金 25 獎金 美國企業自己的...
設計模式 工廠模式 抽象工廠模式
建立物件時不會對客戶暴露建立邏輯,並且通過使用乙個共同的介面來指向建立的物件。sept1 建立乙個公共介面,將要對外開放的方法在這裡定義。sept2 建立實現介面的類,用即實現對外開放的類的方法 sept3 建立工廠,提供乙個get方法,這個方法提供返回實現類的物件 建立選擇 sept4 使用,建立...
抽象工廠模式 常用設計模式 抽象工廠模式
提供乙個建立一系列相關或相互依賴物件的介面,而無需指定它們具體的類。在工廠方法模式中,我們的具體建立者每次使用都只能建立乙個同型別的物件,假如我們現在需要的是多個不同型別的物件,工廠方法就滿足不了需求了。這時我們可以把多個工廠方法組合到乙個類,這就是抽象工廠模式,它就是專門用來建立多個產品,也可以說...