<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      【原】從頭學習設計模式(二)——簡單工廠模式

      一、引入

       

        簡單工廠模式在開發中應用的情況也非常多,但其并不是GOF二十三種設計模式之一,最多只能算作是工廠方法模式的一種特殊形式,從設計模式的類型上來說,簡單工廠模式是屬于創建型模式,又叫做靜態工廠方法(Static Factory Method)模式。

        簡單工廠模式的實質是由一個工廠類根據傳入的參數動態決定應該創建哪一個產品類(這些產品類繼承自一個父類或接口)的實例。

       

      二、類圖

       

        下面通過比較直觀的類圖來說明一下

       

        1.首先需要定義一個通用接口IProduct,作為構造實例的類型

        2.定義不同的產品類 (Product_A和Product_B),均繼承該接口,并各自實現接口定義的方法

        3.構造工廠類,并定義Creator方法(一般是static的),通過Creator的方法參數,在方法體內判斷應該構造哪種類型的對象并返回(返回類型統一為IProduct)

       

      三、代碼結構

       

        由上面的類圖,我們很容易得到類似下面的代碼:

       

              private static void Main(string[] args)
              {
                  IProduct product1 = Factory.Creator(ProductName.Product_A);
                  product1.BeCreated();
                  IProduct product2 = Factory.Creator(ProductName.Product_B);
                  product2.BeCreated();
                  Console.ReadKey();
              }
      
      /// <summary> /// 接口 /// </summary> public interface IProduct { void BeCreated(); } /// <summary> /// Product_A類型 /// </summary> public class Product_A : IProduct { public void BeCreated() { Console.WriteLine("Product_A has been created!"); } } /// <summary> /// Product_B類型 /// </summary> public class Product_B : IProduct { public void BeCreated() { Console.WriteLine("Product_B has been created!"); } } /// <summary> /// 簡單工廠類 /// </summary> public class Factory { public static IProduct Creator(ProductName name) { if(name ==ProductName.Product_A) { return new Product_A(); } else if (name == ProductName.Product_B) { return new Product_B(); } else { throw new Exception("Product Name is invalid."); } } } /// <summary> /// 可構造的產品類型的名稱 /// </summary> public enum ProductName { Product_A, Product_B }

       

        簡單工廠模式就像它的名字一樣簡單,總結起來就是一個產品接口,一個實現了產品接口的產品,和一個工廠類,這個工廠類根據要傳入的方法參數去創造一個具體的產品然后轉型為接口類型返回。

       

      四、簡單工廠模式的優缺點

       

        優點:

        通過使用工廠類,外界不再需要關心如何創造各種具體的產品,只要提供一個產品的名稱作為參數傳給工廠,就可以直接得到一個想要的產品對象,并且可以按照接口規范來調用產品對象的所有功能(方法)。

        構造容易,邏輯簡單。

       

        缺點:

        1.細心的朋友可能早就發現了,這么多if else判斷完全是Hard Code啊,如果我有一個新產品要加進來,就要同時添加一個新產品類,并且必須修改工廠類,再加入一個 else if 分支才可以, 這樣就違背了 “開放-關閉原則”中的對修改關閉的準則了。當系統中的具體產品類不斷增多時候,就要不斷的修改工廠類,對系統的維護和擴展不利。那有沒有改進的方法呢?在工廠方法模式中會進行這方面的改進。

        2.一個工廠類中集合了所有的類的實例創建邏輯,違反了高內聚的責任分配原則,將全部的創建邏輯都集中到了一個工廠類當中,因此一般只在很簡單的情況下應用,比如當工廠類負責創建的對象比較少時。

       

       

      posted @ 2013-10-26 19:50  Tony Zhao  閱讀(3036)  評論(2)    收藏  舉報
      主站蜘蛛池模板: 汝阳县| 亚洲成在人线AV品善网好看| 国产亚洲真人做受在线观看 | 国产不卡av一区二区| 欧洲精品色在线观看| 国产精品久久久久久久久久妞妞| 亚洲午夜亚洲精品国产成人| 无码国模国产在线观看免费| 国产精品99久久久久久董美香| 91中文字幕一区在线| 亚洲欧洲色图片网站| 国产精品老熟女露脸视频| 色综合激情丁香七月色综合| 免费大黄网站在线观看| 中文字幕久无码免费久久| 亚洲a免费| 亚洲无人区码二码三码区| 国产成人精品亚洲精品日日| 亚洲一区二区偷拍精品| 国产欧亚州美日韩综合区| 日韩精品国产二区三区| 欧美www在线观看| 国产一区二区日韩在线| 国产精品免费久久久免费| 国产亚洲精品VA片在线播放| 思思99热精品在线| 40岁大乳的熟妇在线观看| 被黑人巨大一区二区三区| 国产白嫩护士在线播放| 2020精品自拍视频曝光| 永川市| 欧美极品色午夜在线视频| 亚洲女人天堂成人av在线 | 中文字幕精品无码一区二区| 一区二区三区四区五区自拍| 中文字幕无码视频手机免费看| 日本熟妇XXXX潮喷视频| 偷拍精品一区二区三区| 石棉县| 狠狠色丁香婷婷综合久久来来去 | 亚洲国产高清av网站|