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

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

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

      設計模式之建造者模式

      今天學習了建造者模式,核心就是構建和表示分離。如果一個對象組成部分相對穩定,構建過程千變萬化,則其可以采用建造者模式。

      建造者模式的核心思想:構建和表示分離

      在建造者模式中,分為三個部分:指導者,虛擬的建造者,實際的建造者

      指導者:指導建造者進行建造,通用方法為構造方法

      虛擬建造者:抽象出對象所必須的方法 將建造過程抽象化

      實際的建造者:也可以稱之為真實的建造者 可以進行對象的逐步建造

      在這里我以電腦的構建為例,寫了一個真實樣例,以便方便自己理解建造者模式;

      在我的設計中:

      1.Engineer充當的是指導者的角色--->Director

      2.Firm充當的是抽象的建造者,聲明了建造者所必須的一些方法或者步驟---->Builder

      3.SAMSUNG是真實的建造者,實現了抽象建造者的方法,進行產品的構建---->ConcreteBuilder

      4.Computer是產品,最終表現形式 

      建造者模式的核心思想,構建過程與表現分離,以下是不同的角色的類

      Director指導者:

      package v3;
      
      //工程師指導電腦的生產過程
      public class Engineer {
          public Computer Build(Firm firm){
              firm.BuildComputerKeyBoard();
              firm.BuildComputerMaster();
              firm.BuildComputerMouse();
              firm.BuildComputerScreen();
              return  firm.BuildComputer();
          }
      
      }

      Builder抽象的建造者:

      package v3;
      
      //廠商 抽象
      public abstract class Firm {
      
          public abstract void BuildComputerMaster();
      
          public abstract void BuildComputerScreen();
      
          public abstract void BuildComputerMouse();
      
          public abstract void BuildComputerKeyBoard();
      
          public abstract Computer BuildComputer();
      }

      ConcretBuilder真實的建造者:

      package v3;
      
      public class SAMSUNG extends   Firm {
      
          private Computer computer =null;
      
          public SAMSUNG() {
      
              computer =new Computer();
          }
      
          @Override
          public void BuildComputerMaster() {
              computer.Master="HP 越靈 真的好";
          }
      
          @Override
          public void BuildComputerScreen() {
              computer.Screen="HTC 更亮";
          }
      
          @Override
          public void BuildComputerMouse() {
              computer.Mouse="羅技 三億鼠標的槍戰夢想";
          }
      
          @Override
          public void BuildComputerKeyBoard() {
              computer.Keyboard="真機械鍵盤質感";
          }
      
          @Override
          public Computer BuildComputer() {
              return computer;
          }
      
      
      }

      Product產品:Computer

      package v3;
      
      //組成部分固定 組成方法急劇變化
      public class Computer {
      
          public String Master;
      
          public String Screen;
      
          public String Mouse;
      
          public String Keyboard;
      
          @Override
          public String toString() {
              return "Computer{" +
                      "Master='" + Master + '\'' +
                      ", Screen='" + Screen + '\'' +
                      ", Mouse='" + Mouse + '\'' +
                      ", Keyboard='" + Keyboard + '\'' +
                      '}';
          }
      }

      整個建造者模式的測試:

      package v3;
      
      //組成部分固定 組成方法急劇變化
      public class Computer {
      
          public String Master;
      
          public String Screen;
      
          public String Mouse;
      
          public String Keyboard;
      
          @Override
          public String toString() {
              return "Computer{" +
                      "Master='" + Master + '\'' +
                      ", Screen='" + Screen + '\'' +
                      ", Mouse='" + Mouse + '\'' +
                      ", Keyboard='" + Keyboard + '\'' +
                      '}';
          }
      }

      執行結果:

      然后學習如何對建造者模式進行簡化,將指導者與抽象的建造者合并

      指導者與抽象的建造者合并之后的結果是這樣的

      package v4;
      
      //廠商 抽象
      public abstract class Firm {
      
          Computer computer=new Computer();
      
          public abstract void BuildComputerMaster();
      
          public abstract void BuildComputerScreen();
      
          public abstract void BuildComputerMouse();
      
          public abstract void BuildComputerKeyBoard();
      
          public  Computer BuildComputer(Firm firm){
              firm.BuildComputerKeyBoard();
              firm.BuildComputerMaster();
              firm.BuildComputerScreen();
              firm.BuildComputerMouse();
      
              return firm.getComputer();
          }
      
          public Computer getComputer(){
              return  computer;
          }
      }

      最后測試結果的代碼為

              Firm firm =new ConcreteFirm();
      
              computer=firm.BuildComputer(firm);

      核心是自己指導自己進行對象的建造。

      posted @ 2019-08-06 21:27  coder-zhou  閱讀(309)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 国产伦一区二区三区久久| 国产一卡2卡三卡4卡免费网站| 精品蜜臀国产av一区二区| 在线精品亚洲区一区二区| 欧美视频在线播放观看免费福利资源 | 无码熟妇人妻AV影音先锋| 免费拍拍拍网站| 日韩精品久久不卡中文字幕| 亚洲春色在线视频| 国产人与zoxxxx另类| 欧洲亚洲国内老熟女超碰| 亚洲欧美人成网站在线观看看| 2019nv天堂香蕉在线观看| 国产精品十八禁一区二区| 中国女人熟毛茸茸A毛片| 亚洲人成网站观看在线观看 | 久久人人爽人人爽人人片av| 色综合久久天天综线观看| 无码人妻丝袜在线视频| 久久狠狠高潮亚洲精品| 亚洲开心婷婷中文字幕| 日韩一区二区三区水蜜桃| 人人妻人人做人人爽夜欢视频| 国产精品一二二区视在线| 线观看的国产成人av天堂| 亚欧乱色精品免费观看| 国产精品中文字幕久久| 国产亚洲精品岁国产精品| 亚洲午夜理论片在线观看| 久久久精品人妻一区二区三区| 亚洲国产精品视频一二区| 亚洲精品亚洲人成在线| 女同亚洲精品一区二区三| 无码日韩av一区二区三区| 欧美丰满熟妇xxxx性| 久久精品熟女亚洲av麻| 日本一区二区三深夜不卡| 国产va免费精品观看| 久久久久久久久毛片精品| 国产亚洲亚洲国产一二区| 夜夜躁狠狠躁日日躁视频|