一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - C# - C# 設計模式系列教程-簡單工廠模式

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

2021-11-23 15:10Wang Juqiang C#

簡單工廠模式職責單一,實現簡單,且實現了客戶端代碼與具體實現的解耦。

1. 概述:

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

2. 模式中的角色

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

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

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

3. 模式解讀

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

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

  3.2 簡單工廠模式的代碼實現

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
/// <summary>
/// 簡單工廠類,用sealed修飾,
/// </summary>
public class simpleproductfactory
{
 /// <summary>
 /// 使用靜態方法,根據傳入的參數來指定要實例化哪一種產品
 /// </summary>
 /// <param name="producttype"></param>
 /// <returns></returns>
 public static product createproduct(string producttype)
 {
  product product = null;
  switch (producttype)
  {
   case "a":
    product = new concreteproducta();
    break;
   case "b":
    product = new concreteproductb();
    break;
  }
 
  return product;
 }
}
 
/// <summary>
/// 抽象產品
/// </summary>
public abstract class product
{
 public product()
 { }
 
 public abstract void opration();
}
 
/// <summary>
/// 具體產品 a
/// </summary>
public class concreteproducta : product
{
 public concreteproducta() { }
 
 public override void opration()
 {
  // 產品a
 }
}
 
/// <summary>
/// 具體產品 b
/// </summary>
public class concreteproductb : product
{
 public concreteproductb() { }
 
 public override void opration()
 {
  //產品b
 }
}

4. 模式總結

  4.1 優點:
    4.1.1 職責單一,實現簡單,且實現了客戶端代碼與具體實現的解耦。

    4.1.2 工廠類是整個模式的關鍵.包含了必要的邏輯判斷,根據外界給定的信息,決定究竟應該創建哪個具體類的對象.

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

    4.1.4 明確了各自的職責和權利,有利于整個軟件體系結構的優化。
  4.2 缺點:
    4.2.1 由于工廠類集中了所有實例的創建邏輯,違反了高內聚責任分配原則,將全部創建邏輯集中到了一個工廠類中;它所能創建的類只能是事先考慮到的,如果需要添加新的類,則就需要改變工廠類了。因此它是違背開放封閉原則的。
    4.2.2 當系統中的具體產品類不斷增多時候,可能會出現要求工廠類根據不同條件創建不同實例的需求.這種對條件的判斷和對具體產品類型的判斷交錯在一起,很難避免模塊功能的蔓延,對系統的維護和擴展非常不利;
    注:這些缺點在工廠方法模式中得到了一定的克服。
  4.3 使用場景:
    4.3.1 工廠類負責創建的對象比較少;
    4.3.2 客戶只知道傳入工廠類的參數,對于如何創建對象(邏輯)不關心;
    4.3.3 由于簡單工廠很容易違反高內聚責任分配原則,因此一般只在很簡單的情況下應用。

以上就是本文的全部內容,希望能給大家一個參考,也希望大家多多支持服務器之家。

延伸 · 閱讀

精彩推薦
  • C#C#設計模式之Visitor訪問者模式解決長隆歡樂世界問題實例

    C#設計模式之Visitor訪問者模式解決長隆歡樂世界問題實例

    這篇文章主要介紹了C#設計模式之Visitor訪問者模式解決長隆歡樂世界問題,簡單描述了訪問者模式的定義并結合具體實例形式分析了C#使用訪問者模式解決長...

    GhostRider9502022-01-21
  • C#C#裁剪,縮放,清晰度,水印處理操作示例

    C#裁剪,縮放,清晰度,水印處理操作示例

    這篇文章主要為大家詳細介紹了C#裁剪,縮放,清晰度,水印處理操作示例,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    吳 劍8332021-12-08
  • C#Unity3D實現虛擬按鈕控制人物移動效果

    Unity3D實現虛擬按鈕控制人物移動效果

    這篇文章主要為大家詳細介紹了Unity3D實現虛擬按鈕控制人物移動效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一...

    shenqingyu060520232410972022-03-11
  • C#C#實現XML文件讀取

    C#實現XML文件讀取

    這篇文章主要為大家詳細介紹了C#實現XML文件讀取的相關代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    Just_for_Myself6702022-02-22
  • C#C#通過KD樹進行距離最近點的查找

    C#通過KD樹進行距離最近點的查找

    這篇文章主要為大家詳細介紹了C#通過KD樹進行距離最近點的查找,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    帆帆帆6112022-01-22
  • C#WPF 自定義雷達圖開發實例教程

    WPF 自定義雷達圖開發實例教程

    這篇文章主要介紹了WPF 自定義雷達圖開發實例教程,本文介紹的非常詳細,具有參考借鑒價值,需要的朋友可以參考下...

    WinterFish13112021-12-06
  • C#深入解析C#中的交錯數組與隱式類型的數組

    深入解析C#中的交錯數組與隱式類型的數組

    這篇文章主要介紹了深入解析C#中的交錯數組與隱式類型的數組,隱式類型的數組通常與匿名類型以及對象初始值設定項和集合初始值設定項一起使用,需要的...

    C#教程網6172021-11-09
  • C#C# 實現對PPT文檔加密、解密及重置密碼的操作方法

    C# 實現對PPT文檔加密、解密及重置密碼的操作方法

    這篇文章主要介紹了C# 實現對PPT文檔加密、解密及重置密碼的操作方法,非常不錯,具有參考借鑒價值,需要的朋友可以參考下...

    E-iceblue5012022-02-12
主站蜘蛛池模板: www日本视频 | 逼水真多 | 日本不卡1卡2卡三卡网站二百 | 精品亚洲一区二区三区在线播放 | 精品推荐国产麻豆剧传媒 | 日韩免费观看成第15集 | 亚洲国产精品高清在线 | 久久久久久久国产精品视频 | 韩国一区二区三区 | 精品国产免费第一区二区三区日韩 | 日韩高清一区二区三区不卡 | 精品亚洲永久免费精品 | 亚洲 欧美 国产 在线观看 | 色综合久久天天综合 | 午夜宅男在线观看 | 天天操夜夜操狠狠操 | 欧美视频一二三区 | 青草草在线观看 | 色综合91久久精品中文字幕 | 欧美日韩在线一区 | 513热点网深夜影院影院诶 | 免费免费啪视频在线观播放 | 双夫1v2 | 色播导航 | 四虎最新紧急更新地址 | 美女扒开肌肌让男人桶 | 男人资源站 | 日韩美一区二区三区 | 青青青手机在线视频 | 亚洲99久久无色码中文字幕 | 91在线视频播放 | 秋霞啪啪网 | 给我免费观看的视频在线播放 | 荡女人人爱全文免费阅读 | 无人区1免费完整观看 | 国产精品资源在线观看 | 国产一二三区视频 | 婷婷99视频精品全部在线观看 | 成人免费国产欧美日韩你懂的 | 日本视频在线观看 | 欧美日韩国产一区二区三区伦 |