C 設計模式系列教程 簡單工廠模式

2022-09-26 05:54:11 字數 1543 閱讀 5208

1. 概述:

將乙個具體類的例項化交給乙個靜態工廠方法來執行,它不屬於gof的23種設計模式,但現實中卻經常會用到

2. 模式中的角色

2.1 工廠類(****** factory): 只包含了建立具體類的靜態方法。

2.2 抽象產品(product):定義簡單工廠中要返回的產品。

2.3 具體產品(concreteproduct):具體產品。

3. 模式解讀

3.1 簡單工廠模式的一般化類圖

3.2 簡單工廠模式的**實現

///

/// 簡單工廠類,用sealed修飾,

///

public class ******productfactory

return product;

} }/// 程式設計客棧ry>

/// 抽象產品程式設計客棧

///

public abstract class product

public abstract void opration();

} ///

/// 具體產品 a

///

public class concreteproducta : product

public override void opration()

}///

/// 具體產品 b

///

public class concreteproductb : product

public override void opration()

}4. 模式總結

4.1 優點:

4.1.1 職責單一,實現簡單,且實現了客戶端**與具體實現的解耦。

4.1.2 工廠類是整個模式的關鍵.包含了必要的邏輯判斷,根據外界給定的資訊,決定究竟應該建立哪個具體類的物件.

4.1.3 通過使用工廠類,外界可以從直接建立具體產品物件的尷尬局面擺脫出來,僅僅需要負責「消費」物件就可以了。而不必管這些物件究竟如何建立及如何組織的.

4.1.4 明確了各自的職責和權利,有利於整個軟體體系結構的優化。

4.2 缺點:

4.2.1 由於工廠類集中了所有例項的建立邏輯,違反了高內聚責任分配原則,將全部建立邏輯集中到了乙個工廠類中;它所能建立的類只能是事先考慮到的,如果需要新增新的類,則就需要改變工廠類了。因此它是違背開放封閉原則的。

4.2.2 當系統中的具體產品類不斷增多時候,可能會出現要求工廠類根據不同條件建立不同例項的需求.這種對條件的判斷和對具體產品型別的判斷www.cppcns.com交錯在一起,很難避免模組功能的蔓延,對系統的維護和擴充套件非常不利;

注:這些缺點在工廠方法模式中得到了一定的克服。

4.3 使用場景:

4.3.1 工廠類負責建立的物件比較少;

4.3.2 客戶只知道傳入工廠類的引數,對於如何建立物件(邏輯)不關心;

4.3.3 由於簡單工廠很容易違反高內聚責任分配原則,因此一般只在很簡單的情況下應用。

本文標題: c# 設計模式系列教程-簡單工廠模式

本文位址: /ruanjian/csharp/151894.html

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

1.概述 定義乙個用於建立物件的介面,讓子類決定例項化哪乙個類。工廠方法使乙個類的例項化延遲到子類。2.模式中的角色 2.1 抽象工廠 creator 這個抽象類 或介面 宣告乙個建立物件的工廠方法,用來返回乙個product型別的物件。2.2 具體工廠 concretecreator 重定義工廠方...

設計模式系列1(簡單工廠模式)

簡單工廠模式 factory pattern 意圖 1 專門定義乙個類來負責建立其他類的例項,被建立的例項通常都具有共同的父類。2 factory 模式又稱為靜態工廠方法 static factory method 模式,屬於類的建立型模式,通常他根據自變數的不同返回不同類的例項。3 簡單工廠模式實...

設計模式 簡單工廠模式(C )

一.簡單工廠模式又稱靜態工廠方法模式 static factory method 它不是gof 所講的23種設計模式之一,但是它卻是我們在編碼過程中經常使用的方法之一。1.靜態工廠方法統一管理物件的建立。靜態工廠方法通過傳入的引數判斷決定建立哪乙個產品的例項,封裝了物件的建立,客戶端只管消費,實現了...