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

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

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

      L*_*L

      創(chuàng)建型模式

      設(shè)計模式【GoF23】

      是一套用來提高代碼復用性、可維護性、可讀性、穩(wěn)健性以及安全性的解決方案。
      優(yōu)點:①提高程序員的思維能力、編程能力和設(shè)計能力。②使程序設(shè)計更加標準化、代碼編制更加工程化,使軟件開發(fā)效率大大提高,從而縮短軟件的開發(fā)周期。
      類型 模式
      創(chuàng)建型模式 單例模式、工廠模式、抽象工廠模式、建造者模式、原型模式
      結(jié)構(gòu)型模式 適配器模式、橋接模式 、裝飾模式、組合模式、外觀模式、享元模式、代理模式
      行為型模式 模板方法模式、命令模式、迭代器模式、觀察者模式、中介者模式、備忘錄模式、解釋器模式、狀態(tài)模式、策略模式、職責鏈模式、訪問者模式
      OOP七大原則:
      • 開比原著:對擴展開放,對修改關(guān)閉
      • 里氏替換原則:繼承必須確保超類所擁有的性質(zhì)在子類中仍成立
      • 依賴倒置原則:要面向接口,不要面向?qū)崿F(xiàn)編程
      • 單一職責原則:控制類的粒度大小、將對象解耦、提高其內(nèi)聚性
      • 接口隔離原則:要為各個類建立他們專用的接口
      • 迪米特法則:只與你的直接朋友交談
      • 合成復用原則:盡量先使用組合或聚合等關(guān)聯(lián)關(guān)系來實現(xiàn),其次才考慮使用繼承關(guān)系來實現(xiàn)

      1.單例模式

      • 餓漢式單例:直接加載對象,浪費空間
      • 懶漢式單例【DCL】:實例為空時才創(chuàng)建,在多線程下會發(fā)生錯誤,因此需要雙重檢測鎖控制

      2.工廠模式與抽象工廠模式

      • 作用:實現(xiàn)創(chuàng)建者與調(diào)用者分離
      • 分類:簡單工廠模式、工廠方法模式
      模式 特點 代碼實現(xiàn)
      簡單工廠模式 用來生產(chǎn)同一等級結(jié)構(gòu)中的任意產(chǎn)品
      工廠方法模式 用來生產(chǎn)同一等級結(jié)構(gòu)中的固定產(chǎn)品
      抽象工廠模式 圍繞一個超級工廠創(chuàng)建其他工廠

      3.建造者模式

      • 作用:在用戶不知道對象的構(gòu)造過程和細節(jié)的情況下可以直接創(chuàng)建復雜的對象
      • 例子:工廠(建造者模式):負責制造汽車,組裝過程在工廠內(nèi)部;汽車購買者:通過對象的類型和內(nèi)容直接購買使用即可
      • 作用:實現(xiàn)創(chuàng)建者與調(diào)用者分離
      • 建造者與抽象工廠模式的比較:
        *  1.與抽象工廠相比,建造者模式返回一個組裝好的完整產(chǎn)品,而抽象工廠返回一系列相關(guān)的產(chǎn)品,這些產(chǎn)品位于不同的產(chǎn)品等級結(jié)構(gòu),構(gòu)成一個產(chǎn)品族
        
        * 2.在抽象工廠模式中,客戶端實例化工廠類,然后調(diào)用工廠方法獲取所需的產(chǎn)品對象,而建造者模式中,客戶端可以不直接調(diào)用建造者的相關(guān)方法,而是通過指揮者來指導如何生成對象,包括對象組裝過程和建造步驟,側(cè)重于一步步構(gòu)造一個復雜對象返回一個完整的對象。
        
        *  3.如果將抽象工廠模式看成汽車配件生產(chǎn)工廠,生產(chǎn)一個產(chǎn)品族的產(chǎn)品,那么建造者模式就是汽車組裝工廠,通過對部件的組裝可以返回一輛完整的汽車。
        
      • 代碼實現(xiàn):
         //抽象的建造者
            public abstract class Builder{
                  abstract void builder1();      //地基
                  abstract void builder2();      //鋼筋工程
                  abstract void builder3();      //鋪電線
                  abstract void builder4();      //粉刷
                  //得到產(chǎn)品
                  abstract Product getProduct();
            }   
      
      
            //產(chǎn)品:房子
            public class Product{
                  private String builder1;
                  private String builder1;
                  private String builder1;
                  private String builder1;
      
                  public String getBuilder1(){
                        return builder1;
                  }
                  public void setBuilder1(String builder){
                        this.builder = builder1;
                  }
      
                  public String getBuilder2(){
                        return builder2;
                  }
                  public void setBuilder2(String builder){
                        this.builder = builder2;
                  }
      
                  public String getBuilder3(){
                        return builder3;
                  }
                  public void setBuilder3(String builder){
                        this.builder = builder3;
                  }
      
                  public String toString(){
                        return "Product("+
                              "builder1="+builder1+'\''+
                              "builder2="+builder2+'\''+
                              "builder3="+builder3+'\''+
                              "builder4="+builder4+'\''+
                              '}';
                  }
            }
      
      
      
            //具體的建造者:工人
            public class Worker extends Builder{
      
                  private Product product;
      
                  public Worker(){
                        product = new Product();
                  }
      
                  void builder1(){
                        product.setBuilder1("地基");
                  }
      
                  void builder1(){
                        product.setBuilder1("鋼筋工程");
                  }
                  void builder1(){
                        product.setBuilder1("鋪電線");
                  }
                  void builder1(){
                        product.setBuilder1("粉刷");
                  }
                  Product getProduct(){
                        return product;
                  }
            }
      
            //指揮:核心
            public class Director{
                  public Product build(Builder builder){
                        builder.builder1();
                        builder.builder2();
                        builder.builder3();
                        builder.builder4();
      
                        return builder.getProduct();
                  }
            
            }
      
            //測試
            public class Test{
                  public static void main(String[] args){
                        Director director = new Director();
                        Product builder = director.builder(new Worker());
                        System .out.println(builder.toString());
                  }
            }
      
      
      

      4.原型模式

      • 實現(xiàn)copy《克隆》
          //1.實現(xiàn)一個接口 Cloneable;2.重寫一個方法 Clone()  
            public class Video implements Cloneable {
                  private String name;
                  private Date creatTime;
      
                  protected Object clone() throws CloneNotSupportedException {
                        return super.clone();
                  }
      
                  public Video(){}
                  public Video(String name,Date createTime){
                        this.name = name;
                        this.createTime = createTime;
                  }
      
                  public getName(){
                        return name;
                  }
                  public setName(String name){
                        this.name = name;
                  }
      
                  public getCreateTime(){
                        return createTime;
                  }
                  public setCreateTime(Date createTime){
                        this.createTime = createTime;
                  }
      
      
            }
      
      
            public class newClone{
                  publlic static void main(String[] main){
                        //創(chuàng)建原型對象
                        Date date = new Date();
                        Video v1 = new Video("LL",date);
                        System.out.println("v1--"+v1);
                        System.out.println("v1--hash"+v1.hashCode());
            
                        //
                        Video v2 = (Video)v1.clone();
                        System.out.println("v2--"+v2);
                        System.out.println("v2--hash"+v2.hashCode());
                  }
            }
      
      

      創(chuàng)建型模式完結(jié)

      posted on 2020-12-17 19:19  L*_*L  閱讀(61)  評論(0)    收藏  舉報

      主站蜘蛛池模板: 综合色一色综合久久网| 中文字幕精品人妻丝袜| 91中文字幕一区在线| 亚洲av日韩av永久无码电影| 亚洲无人区一区二区三区| 久久99热只有频精品8| 久久亚洲精品无码播放| 国产一区二区午夜福利久久| 亚洲国产精品午夜福利| 国产毛a片啊久久久久久保和丸 | 国产一区二区在线有码| 欧美成人精品| 亚洲AV成人无码久久精品| 少妇人妻偷人免费观看| 日韩欧美在线综合网另类| 色综合 图片区 小说区| 婷婷四房播播| 国产精品男女午夜福利片| chinese性内射高清国产| 久久中精品中文字幕入口| 亚洲精品国产男人的天堂| 国产精品久久精品| 免费无码成人AV片在线 | 中文字幕日韩精品人妻| 亚洲爆乳精品无码一区二区| 精品国产一区二区三区性色| 国产亚洲AV电影院之毛片| 司法| 福利一区二区视频在线| 久久经精品久久精品免费观看 | 国产成人精品永久免费视频| 免费人成在线观看网站| 国产午夜精品理论大片| 欧美性大战xxxxx久久久| 开心五月深深爱天天天操| 国产精品视频亚洲二区| 久久久久免费看黄a片app| 中文字幕国产原创国产| 男人猛躁进女人免费播放| 国产精品自产拍在线播放| 亚洲AV无码不卡在线播放|