為建立一組相關或相互依賴的物件提供乙個介面,而且無需指定他們的具體類。
抽象工廠模式是所有形態的工廠模式中最為抽象和最具一般性的一種形態。抽象工廠模式是指當有多個抽象角色時,使用的一種工廠模式。
抽象工廠模式可以向客戶端提供乙個介面,使客戶端在不必指定產品的具體的情況下,建立多個產品族中的產品物件。
應用場景:乙個生產集團,在北京的工廠需要生產a類汽車,a類電視;在上海的工廠需要生產b類汽車,a類電視。而在廣州的工廠需要生產c類汽車,c類電視。
我們可以使用抽象工廠,抽象出工廠類,和產品類,然後繼承工廠類,生產所需要的具體產品型別,產品繼承抽象出來的產品,實現裡面的行為方法。
1.我們抽象出car產品和tv產品:
using system;
using system.collections.generic;
using system.linq;
using system.text;
namespace productentity
}
using system;
using system.collections.generic;
using system.linq;
using system.text;
namespace productentity
}
2.繼承自抽象出來的產品類,實現裡面的方法,成為具體產品:這裡只舉例acar和tva的,後面的bcar,ccar,tvb,tvc,類似。
using system;
using system.collections.generic;
using system.linq;
using system.text;
namespace productentity}}
using system;
using system.collections.generic;
using system.linq;
using system.text;
namespace productentity}}
3.抽象出工廠類,裡面有待實現建立產品的方法:
using system;
using system.collections.generic;
using system.linq;
using system.text;
using productentity;
namespace factorymeth
}
4.建立具體的工廠類,繼承自抽象出來的工廠,實現裡面建立具體產品的方法。例:後面的b工廠,和c工廠類似實現。
using productentity;
using system;
using system.collections.generic;
using system.linq;
using system.text;
namespace factorymeth
/// /// 生產a品牌汽車
///
///
public override car newcar()}}
using productentity;
using system;
using system.collections.generic;
using system.linq;
using system.text;
namespace factorymeth
/// /// 生產a品牌汽車
///
///
public override car newcar()}}
using system;
using system.collections.generic;
using system.linq;
using system.text;
using productentity;
namespace factorymeth
/// /// 生產c品牌汽車
///
///
public override car newcar()}}
5.呼叫,根據具體情況進行選擇,現在是在哪乙個工廠,就建立該工廠:
using system;
using system.collections.generic;
using system.linq;
using system.text;
using factorymeth;
using productentity;
namespace 抽象工廠模式}}
總結:以後如果該集團需要增加新的工廠,製造其他型別的產品,就只需要增加具體工廠類,和產品類,並實現具體產品即可。
其實工廠和抽象工廠沒有多大區別,只不過是抽象工廠生產的商品是多個而已
通俗的說,就是抽象工廠模式的具體工廠裡面會有多個例項具體物件的方法
更直觀的就是,抽象工廠模式每個工廠一次造多個產品,而工廠模式的每個工廠只造乙個產品
設計模式 C 設計模式 抽象工廠模式
設計模式 物件導向設計七大原則 設計模式 設計模式概念和分類 設計模式 c 設計模式 單例模式 設計模式 c 設計模式 工廠方法模式 設計模式 c 設計模式 抽象工廠模式 設計模式 c 設計模式 建造者模式 設計模式 c 設計模式 原型模式 抽象工廠模式包含如下角色 abstractfactory ...
c 設計模式(抽象工廠模式)
good 定義了乙個建立一系列相關或相互依賴的介面,而無需指定它們的具體類。用於交換產品系列,如access sql server 產品的具體類名被具體工廠的實現分離 例 include include include using namespace std 使用者抽象介面 class iuser ...
C 設計模式 抽象工廠模式
問題描述 之前講到了c 設計模式 工廠方法模式,我們可能會想到,後期產品會越來越多了,建立的工廠也會越來越多,工廠進行了增長,工廠變的凌亂而難於管理 由於工廠方法模式建立的物件都是繼承於product的,所以工廠方法模式中,每個工廠只能建立單一種類的產品,當需要生產一種全新的產品 不繼承自produ...