C 設計模式系列教程 工廠方法模式

2022-09-26 05:54:10 字數 1591 閱讀 3003

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結...