一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

工廠模式vs簡單工廠

 印度阿三17 2018-10-25

前言

  工廠方法模式(Factory Method),定義一個用于創(chuàng)建對象的接口,讓子類決定實(shí)例化哪一個類。工廠方法使一個類的實(shí)例化延遲到其子類。

  簡單工廠模式的最大優(yōu)點(diǎn)在于工廠類中包含了必要的邏輯判斷,根據(jù)客戶端的選擇動態(tài)實(shí)例化相關(guān)類,對于客戶端來說,去除了與具體產(chǎn)品的依賴。例如:計算器,只需要把“ ”、“-”等給客戶端,然后傳入工廠,工廠就自動給出了相應(yīng)的實(shí)例,但問題就這里,如果添加一個“*”的功能,我們一定要給工廠類的方法加‘case’判斷的,修改原有的類?這就違背了開-閉原則。

1、公共類

  

 1     /// <summary>
 2     /// 這個人會掙錢,會開公司,男人,女人都要學(xué)習(xí)
 3     /// </summary>
 4     public class MaYun
 5     {
 6         public void Money()
 7         {
 8             Console.WriteLine("掙錢");
 9         }
10         public void Company()
11         {
12             Console.WriteLine("開公司");
13 
14         }
15     }
1     public class Man : MaYun
2     {
3 
4     }
5     public class Woman : MaYun
6     {
7 
8     }

?

二、簡單工廠

  工廠類:

 1  public class SimpleFactory
 2     {
 3         public static MaYun CreateMaYun(string type)
 4         {
 5             MaYun m = null;
 6             switch (type)
 7             {
 8                 case "Man":
 9                     m = new Man();
10                     break;
11                 case "Woman":
12                     m = new Woman();
13                     break;
14                 default:
15                     break;
16 
17             }
18             return m;
19         }
20     }

  客戶端:

 1     class Program
 2     {
 3         static void Main(string[] args)
 4         {
 5             #region 簡單工廠
 6             MaYun man1 = SimpleFactory.CreateMaYun("Man");
 7             man1.Money();
 8             man1.Company();
 9             MaYun woman1 = SimpleFactory.CreateMaYun("Woman");
10             woman1.Money();
11             woman1.Company();
12             #endregion
13         }
14     }

?

三、工廠

  定義工廠接口,并讓男人的工廠和女人的工廠類繼承該接口

 1  public interface  IFactory
 2     {
 3         MaYun CreateMaYun();
 4     }
 5     public class ManFactory : IFactory
 6     {
 7         public MaYun CreateMaYun()
 8         {
 9             return new Man();
10         }
11     }
12     public class WomanFactory : IFactory
13     {
14         public MaYun CreateMaYun()
15         {
16             return new Woman();
17         }
18     }

  客戶端:

 1     class Program
 2     {
 3         static void Main(string[] args)
 4         {
 5 
 6             #region 工廠
 7            //要修改為woman,只需修改 IFactory factory = new WoManFactory();
 8             IFactory factory = new ManFactory();
 9             MaYun mm = factory.CreateMaYun();
10             mm.Company();
11             mm.Money();
12             #endregion
13         }
14     }            

?

?

總結(jié):

  1、盡管如果換成‘woman類’或者其他子類,還是要修改代碼的,但只需要修改一處就可以了。

  2、工廠模式克服了簡單工廠違背開-閉原則的缺點(diǎn),又保持了封裝對象創(chuàng)建過程的優(yōu)點(diǎn)。

?

  參考書籍:大話設(shè)計模式

來源:http://www./content-4-68401.html

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    国产色第一区不卡高清| 免费性欧美重口味黄色| 国产精品伦一区二区三区四季 | 老鸭窝老鸭窝一区二区| 激情内射日本一区二区三区| 日本人妻精品有码字幕| 色哟哟精品一区二区三区| 久久亚洲精品成人国产| 一区二区三区日韩中文| 久久精品色妇熟妇丰满人妻91| 国产欧美一区二区色综合| 搡老熟女老女人一区二区| 欧美不雅视频午夜福利| 熟妇久久人妻中文字幕| 成年女人下边潮喷毛片免费| 亚洲国产一级片在线观看| 日本加勒比不卡二三四区| 欧美视频在线观看一区| 色哟哟国产精品免费视频| 亚洲一区二区精品免费视频| 国产又粗又长又大高潮视频| 国产又粗又长又大高潮视频| 久久国产人妻一区二区免费| 91久久国产福利自产拍| 中文字幕中文字幕在线十八区 | 日韩色婷婷综合在线观看| 亚洲av日韩av高潮无打码| 国产又粗又长又大高潮视频 | 精品精品国产欧美在线| 国产精品欧美一区两区| 精品香蕉国产一区二区三区| 国产欧美一区二区久久| 我的性感妹妹在线观看| 日韩精品在线观看一区| 日本一区二区三区久久娇喘| 精品少妇人妻一区二区三区 | 日本在线 一区 二区| 麻豆印象传媒在线观看| 高清亚洲精品中文字幕乱码| 欧美性欧美一区二区三区| 亚洲国产精品肉丝袜久久|