1. 概述:
定義乙個用於建立物件的介面,讓子類決定例項化哪乙個類。工廠方法使乙個類的例項化延遲到子類。
2. 模式中的角色
2.1 抽象工廠(creator):這個抽象類(或介面)宣告乙個建立物件的工廠方法,用來返回乙個product型別的物件。
2.2 具體工廠(concretecreator):重定義工廠方法,返回乙個具體的concrete product例項。
2.3 抽象產品(product):定義工廠方法所建立的物件。
2.4 具體產品(concreteproduct): 具體產品,繼承自product抽象類。
3. 模式解讀
3.1 工廠方法模式的一般化類圖
3.2 工廠方法模式的**實現
///
/// 抽象工廠,宣告了乙個建立product的方法
///
public abstract class creator
///
/// 具體產工廠,產品類 a 的建立者,繼承自抽象工廠creator
///
public class productacreator : creator
}/// 程式設計客棧ary>
/// 具體產工廠,產品類 b 的建立者,繼承自抽象工廠creator
///
public class productbcreator : creator
public override product createproduct()
} ///
/// 抽象產品,定義工廠方法中所建立的物件
///
public abstract class product
public abstract void opration();
} ///
/// 具體產品a,繼承自product
///
public class concreteproducta : product
public override void opration()
} ///
/// 具體產品b,繼承自product
///
public class concreteproductb : product
public override void owww.cppcns.compration()
}4. 模式總結
4.1 優點:
工廠方法去除了條件分支(解除了工廠類與分支的耦合),解決了簡單工廠對修改開放的問題。
4.2 缺點:
工廠方法模式實現時,客戶端需要決定例項化哪個工廠來實現對具體產品的構建,選擇判斷依然存在,也就是說,工廠方法模式將簡單工廠的邏輯判斷交給客戶端去處理。
對簡單工廠模式來說,增加功能是要修改工廠類的;但對工廠方法模式,修改的是客戶端。
程式設計客棧 4.3 使用場景:
對於某個產品,呼叫者清楚地知道應該使用哪個具體工廠服務,例項化該具體工廠,生產出具體的產品來。
子類的數量不固定,隨時可能有新的功能子類出現
本文標題: c# 設計模式系列教程-工廠方法模式
本文位址: /ruanjian/csharp/151997.html
設計模式系列2 工廠方法模式
工廠方法模式,解決了 工廠模式中,需要增加或者刪除產品 必須修改 工廠類的弊端。把生產產品扔給具體的工廠,因為 每個產品都對應乙個工廠。主要組成部分 1 car 定義了所有產品 這裡是汽車 的共有熟悉,汽車必須有引擎 public abstract class car override public...
Android設計模式系列 工廠方法模式
android中用到了太多的工廠類,其中有用工廠方法模式的,當然也有很多任務廠並不是使用工廠方法模式的,只是工具管理類。ad 工廠方法模式,往往是設計模式初學者入門的模式,的確,有人稱之為最為典型最具啟發效果的模式。android中用到了太多的工廠類,其中有用工廠方法模式的,當然也有很多任務廠並不是...
C 設計模式 工廠方法模式
問題描述 之前講到了c 設計模式 簡單工廠模式,由於簡單工廠模式的侷限性,比如 工廠現在能生產producta productb和productc三種產品了,此時,需要增加生產productd產品 那麼,首先是不是需要在產品列舉型別中新增新的產品型別標識,然後,修改factory類中的switch結...