介紹了簡單工廠與工廠方法之後,現在我們來看一下工廠三兄弟的最後乙個 —— 抽象工廠。
那什麼是抽象工廠呢?
抽象工廠模式(abstract factory pattern):提供乙個建立一系列相關或相互依賴物件說起來,抽象工廠與工廠方法類似,但與工廠不同的是抽象工廠不再提供乙個單一的抽象產品建立。而是提供了同一產品族不同產品等級結構的建立方式。的介面,而無須指定它們具體的類。抽象工廠模式又稱為kit模式,屬於物件建立型模式。
這裡解釋一下兩個名詞:
so,在這裡說白了我們就是在之前的工廠方法當中進行了乙個擴充套件,使得抽象工廠類不再產生單一的產品結構,而是可以生產多個不同的產品結構,而實現工廠就是不同的產品族。
抽象工廠實現了開閉原則,即要求系統對擴充套件開放,對修改封閉,通過擴充套件達到增強其功能的目的。
在這裡增加產品族很方便,只需要增加乙個工廠即可,對已有的**無需任何修改。
但是增加產品結構,必須修改抽象工廠類,然後所有實現類都需要更改,不能很好的支援「開閉原則」。
接下來就上**:
// 電腦產品
public abstract class computer
// 手機產品
public abstract class phone
}}
public class microsoftcomputer : computer
}public class microsoftphone : phone
}
// 抽象工廠
public abstract class absfactory
// 蘋果工廠
public override phone buildphone()
}// 微軟工廠
public class microsoftfactory : absfactory
public override phone buildphone()
}
public static program
}
抽象工廠是工廠方法的進一步擴充套件,抽象工廠模式是所有形式的工廠模式中最為抽象和最具一般性的一種形態。
抽象工廠模式與工廠方法模式最大的區別在於,工廠方法模式針對的是乙個產品等級結構,而抽象工廠模式則需要面對多個產品等級結構。
他們三兄弟之間並沒有太大的差別。抽象工廠如果只構建乙個產品等級結構的話那麼他就退化成為工廠方法,當然工廠方法也可以退化為簡單工廠。
抽象工廠模式適用於:
乙個系統不應當依賴於產品類例項如何被建立、組合和表達的細節;
系統中有多於乙個的產品族,而每次只使用其中某一產品族;
屬於同乙個產品族的產品將在一起使用;
系統提供乙個產品類的庫,所有的產品以同樣的介面出現,從而使客戶端不依賴於具體實現。
設計模式 建立型模式 工廠模式,抽象工廠模式
簡單工廠模式不是 23 種裡的一種,簡而言之,就是有乙個專門生產某個產品的類。它只算工廠模式的乙個特殊實現。簡單工廠模式在實際中的應用相對於其他2個工廠模式用的還是相對少得多,因為它只適應很多簡單的情況。1 建立shape介面 public inte ce shape 2 建立實現該介面的具體圖形類...
設計模式 建立型模型 抽象工廠模式
是一種為訪問類提供乙個建立一組相關或相互依賴物件的介面,且訪問類無須指定所要產品的具體類就能得到同族的不同等級的產品的模式結構。抽象工廠模式是工廠模式的公升級版本,工廠方法模式只生產乙個等級的產品,而抽象工廠模式可生產多個等級的產品。使用抽象工廠模式一般需要滿足以下條件 優點 抽象工廠模式除了具有工...
建立型模式 工廠模式and抽象工廠模式
意圖 定義乙個建立物件的介面,讓其子類自己決定例項化哪乙個工廠類,工廠模式使其建立過程延遲到子類進行。主要解決 主要解決介面選擇的問題。何時使用 我們明確地計畫不同條件下建立不同例項時。如何解決 讓其子類實現工廠介面,返回的也是乙個抽象的產品。關鍵 建立過程在其子類執行。步驟 建立乙個介面 形狀sh...