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

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

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

      Head First設計模式之工廠模式

      一、定義

      定義了一個創建對象的接口, 但由子類決定要實例化的類是哪一個. 工廠方法讓類把實例化推遲到子類

      二、結構

      1、抽象工廠角色:這是工廠方法模式的核心,它與應用程序無關。是具體工廠角色必須實現的接口或者必須繼承的父類。
      2、具體工廠角色:它含有和具體業務邏輯有關的代碼。由應用程序調用以創建對應的具體產品的對象。
      3、抽象產品角色:它是具體產品繼承的父類或者是實現的接口。
      4、具體產品角色:具體工廠角色所創建的對象就是此角色的實例。

      三、實現

      namespace DesignPatterns.FactoryMethod
      {
          class Program
          {
              static void Main(string[] args)
              {
                  Console.WriteLine("使用工廠方法進行計算");
                  Factory factory1 = new AddFactory();
                  Operation operation1 = factory1.CreateOperation();
                  operation1.numberA = 10;
                  operation1.numberB = 20;
                  Console.WriteLine("{0}+{1}={2}", operation1.numberA, operation1.numberB, operation1.GetResult());
      
                  Factory factory2 = new SubFactory();
                  Operation operation2 = factory2.CreateOperation();
                  operation2.numberA = 10;
                  operation2.numberB = 20;
                  Console.WriteLine("{0}-{1}={2}", operation2.numberA, operation2.numberB, operation2.GetResult());
                  Console.Read();
              }
          }
      
          /// <summary>
          /// 抽象操作類
          /// </summary>
          public abstract class Operation
          {
              public int numberA;
              public int numberB;
              public abstract int GetResult();
          }
          /// <summary>
          /// 加法操作
          /// </summary>
          public class AddOperation : Operation
          {
              public override int GetResult()
              {
                  return (this.numberA + this.numberB);
              }
          }
          /// <summary>
          /// 減法操作
          /// </summary>
          public class SubOperation : Operation
          {
              public override int GetResult()
              {
                  return (this.numberA - this.numberB);
              }
          }
      
          public abstract class Factory
          {
              public abstract Operation CreateOperation();
          }
      
          public class AddFactory : Factory
          {
              public override Operation CreateOperation()
              {
                  return new AddOperation();
              }
          }
      
          public class SubFactory : Factory
          {
              public override Operation CreateOperation()
              {
                  return new SubOperation();
              }
          }
      }

      四、適用場景

      • 類不知道自己要創建哪一個對象時
      • 類用它的子類來指定創建哪個對象
      • 當類將創建對象的職責委托給多個幫助子類中的某一個,并且你希望將哪一個幫助子類是代理者這一信息局部化的時候  

      五、優缺點

      優點:

      • 基于工廠角色和產品角色的多態性設計是工廠方法模式的關鍵。它能夠使工廠可以自主確定創建何種產品對象。而且如何創建一個具體產品的細節完全封裝在具體工廠內部,符合高內聚,低耦合。
      • 在系統中加入新產品時,無需修改抽象工廠和抽象產品提供的接口,無需修改客戶端,也無需修改其他的具體工廠和具體產品,很好的利用了封裝和委托。

      缺點:

      • 在添加新產品時,需要編寫新的具體產品類(其實這不算一個缺點,因為這是不可避免的),要增加與之對應的具體工廠類。

       

      參考:

      http://www.rzrgm.cn/yinxiangpei/articles/2366092.html

      http://www.rzrgm.cn/ywqu/archive/2010/01/07/1640855.html

      http://www.rzrgm.cn/Terrylee/archive/2006/01/04/310716.html

       

      歡迎閱讀本系列文章:Head First設計模式之目錄

       

      posted @ 2017-08-10 00:01  心存善念  閱讀(538)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 亚洲精品国产自在久久| 亚洲av色夜色精品一区| 又大又长粗又爽又黄少妇毛片| 梅州市| 国产精品国产精品偷麻豆| 一二三四中文字幕日韩乱码| 女高中生强奷系列在线播放| 亚洲综合另类小说色区一| 国产av丝袜熟女一二三| 午夜精品福利一区二区三| 一区二区丝袜美腿视频| 丰满少妇在线观看网站| 亚洲精品码中文在线观看| 窝窝午夜色视频国产精品破| 最新国产AV最新国产在钱| 国模精品视频一区二区三区| 久久香蕉国产线看观看怡红院妓院| 激情综合网激情综合| 又黄又刺激又黄又舒服| 久青草视频在线视频在线| 色护士极品影院| 日本一区二区三深夜不卡| 亚洲精品色哟哟一区二区| 亚欧洲乱码视频在线专区| 热久久美女精品天天吊色| 日韩精品一区二区三区日韩 | 亚洲AV无码东方伊甸园| 久青草国产在视频在线观看| 人人超碰人摸人爱| 四川丰满少妇无套内谢| 在线中文字幕国产精品| 在线a亚洲老鸭窝天堂| 深夜福利啪啪片| 欧美亚洲精品中文字幕乱码 | 起碰免费公开97在线视频| 国产三级精品三级在专区| 激情综合色综合啪啪开心| 国产卡一卡二卡三免费入口| 欧美激情肉欲高潮视频| 国产无遮挡猛进猛出免费| 日本久久99成人网站|