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

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

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
主站蜘蛛池模板: 图片专区亚洲欧美另类 | 国内自拍网红在线自拍综合 | 日本一道一区二区免费看 | 午夜影院在线免费观看 | 97久久天天综合色天天综合色hd | 国内外精品免费视频 | 2020精品极品国产色在线观看 | 亚洲成年人在线观看 | 香蕉免费看一区二区三区 | 双性np玩烂了np欲之国的太子 | 精品国产一区二区三区在线观看 | 欧美伊香蕉久久综合类网站 | 色老大在线| 偷偷狠狠的日日高清完整视频 | 亚洲国产成人久久综合一 | 五月最新商场女厕所高跟嘘嘘 | 成人黄页网站 | 精品久久久久久午夜 | 韩国最新理论片奇忧影院 | 边摸边吃奶边做爽gif动态图 | 日本一卡2卡3卡4卡乱 | 亚洲AV无码偷拍在线观看 | 操mm | 精品久久久久久久高清 | 成人伊人青草久久综合网破解版 | www伊人| 亚洲偷窥图区色 | 高清一区高清二区视频 | 国产高清视频一区二区 | 星星动漫在线观看无删减 | 色婷婷婷丁香亚洲综合不卡 | 国产欧美日韩在线观看精品 | 无人区乱码1区2区3区网站 | 国产播放啪视频免费视频 | fc2免费人成为视频 eeuss18影院www国产 | 日产中文乱码卡一卡二 | 国产 日韩 欧美 综合 | 沉沦艳妇杨幂肉体小说 | 国产精品啪啪 | 丝瓜视频成人在线观看 | 日本免费在线播放 |