最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java Builder Pattern建造者模式詳解及實例

 更新時間:2017年01月11日 11:58:41   投稿:lqh  
這篇文章主要介紹了Java Builder Pattern建造者模式詳解及實例的相關(guān)資料,需要的朋友可以參考下

Java Builder Pattern

1.概念

    將一個復(fù)雜的構(gòu)建與其表示相分離,使得同樣的構(gòu)建過程可以創(chuàng)建不同的表示。 [構(gòu)建與表示分離,同構(gòu)建不同表示]

    與抽象工廠的區(qū)別:在建造者模式里,有個指導(dǎo)者,由指導(dǎo)者來管理建造者,用戶是與指導(dǎo)者聯(lián)系的,指導(dǎo)者聯(lián)系建造者最后得到產(chǎn)品。即建造模式可以強制實行一種分步驟進行的建造過程。

  建造模式是將復(fù)雜的內(nèi)部創(chuàng)建封裝在內(nèi)部,對于外部調(diào)用的人來說,只需要傳入建造者和建造工具,對于內(nèi)部是如何建造成成品的,調(diào)用者無需關(guān)心。

  舉個簡單的例子,如汽車,有很多部件,車輪,方向盤,發(fā)動機還有各種小零件等等,部件很多,但遠不止這些,如何將這些部件裝配成一部汽車,這個裝配過程也很復(fù)雜(需要很好的組裝技術(shù)), builder模式就是為了將部件和組裝分開。

2.UML圖

3.代碼

 public interface Builder { 
    void buildPartA(); 
    void buildPartB(); 
    void buildPartC(); 
  
    Product getResult(); 
  } 

  //具體建造工具
  public class ConcreteBuilder implements Builder { 
    Part partA, partB, partC; 

    public void buildPartA() {
      //這里是具體如何構(gòu)建partA的代碼
    }; 
    public void buildPartB() { 
      //這里是具體如何構(gòu)建partB的代碼
    }; 
     public void buildPartC() { 
      //這里是具體如何構(gòu)建partB的代碼
    }; 
     public Product getResult() { 
      //返回最后組裝成品結(jié)果
    }; 
  }

  //建造者
  public class Director {
    private Builder builder; 
  
    public Director( Builder builder ) { 
      this.builder = builder; 
    } 
    public void construct() { 
      builder.buildPartA();
      builder.buildPartB();
      builder.buildPartC(); 
    } 
  } 


  public interface Product { }
  public interface Part { }

    下面是調(diào)用builder的方法:

  ConcreteBuilder builder = new ConcreteBuilder();
  Director director = new Director( builder ); 
  
  director.construct(); 
  Product product = builder.getResult();

4.應(yīng)用場景

在Java的應(yīng)用中JavaMail使用到了該模式。

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

相關(guān)文章

  • String的兩種初始化方法講解

    String的兩種初始化方法講解

    今天小編就為大家分享一篇關(guān)于String的兩種初始化方法講解,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-04-04
  • SpringBoot下RabbitMq實現(xiàn)定時任務(wù)

    SpringBoot下RabbitMq實現(xiàn)定時任務(wù)

    這篇文章主要為大家詳細介紹了SpringBoot下RabbitMq實現(xiàn)定時任務(wù),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-11-11
  • Spring Boot 工程的創(chuàng)建和運行(圖文)

    Spring Boot 工程的創(chuàng)建和運行(圖文)

    這篇文章主要介紹了Spring Boot 工程的創(chuàng)建和運行(圖文),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-02-02
  • java常見報錯:Array?Out?of?Bounds兩種解決辦法

    java常見報錯:Array?Out?of?Bounds兩種解決辦法

    這篇文章主要給大家介紹了關(guān)于java報錯Array?Out?of?Bounds的兩種解決辦法,Array out of bounds錯誤表示你嘗試訪問數(shù)組中不存在的索引,即索引小于零或者大于等于數(shù)組的大小,文中通過代碼將解決的辦法介紹的非常詳細,需要的朋友可以參考下
    2024-08-08
  • 詳解Java中二分法的基本思路和實現(xiàn)

    詳解Java中二分法的基本思路和實現(xiàn)

    二分法是一個非常高效的算法,它常常用于計算機的查找過程中。本文將通過示例為大家詳細講講二分法的基本思路和實現(xiàn),感興趣的可以了解一下
    2022-08-08
  • Java通過反射查看類的信息示例

    Java通過反射查看類的信息示例

    這篇文章主要介紹了Java通過反射查看類的信息,結(jié)合實例形式詳細分析了java基于反射獲取類信息的相關(guān)原理與實現(xiàn)技巧,需要的朋友可以參考下
    2019-07-07
  • Java利用opencv實現(xiàn)用字符展示視頻或圖片的方法

    Java利用opencv實現(xiàn)用字符展示視頻或圖片的方法

    這篇文章主要介紹了Java利用opencv實現(xiàn)用字符展示視頻或圖片的方法,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-12-12
  • MyBatis中Mapper的注入問題詳解

    MyBatis中Mapper的注入問題詳解

    這篇文章主要介紹了MyBatis中Mapper的注入問題,我知道在 SpringBoot 體系中,MyBatis 對 Mapper 的注入常見的方式有 2 種,具體哪兩種方法跟隨小編一起看看吧
    2021-09-09
  • Java流式操作之Collectors工具類操作指南

    Java流式操作之Collectors工具類操作指南

    Collectors是Collector的工具類,類中提供了很多流收集、歸約、分組、分區(qū)等方法,方便我們直接使用,下面這篇文章主要給大家介紹了關(guān)于Java流式操作之Collectors工具類操作的相關(guān)資料,需要的朋友可以參考下
    2023-05-05
  • 源碼解讀Spring-Integration執(zhí)行過程

    源碼解讀Spring-Integration執(zhí)行過程

    Spring-Integration基于Spring,在應(yīng)用程序中啟用了輕量級消息傳遞,并支持通過聲明式適配器與外部系統(tǒng)集成,今天主要是看個簡單的hello word進來分析下整個執(zhí)行過程,感興趣的朋友一起看看吧
    2021-06-06

最新評論

六安市| 吉安县| 金山区| 德清县| 庄浪县| 吉首市| 金秀| 绥中县| 鹤山市| 六枝特区| 永胜县| 乌海市| 洪洞县| 信阳市| 濮阳县| 江口县| 深水埗区| 政和县| 建始县| 金秀| 竹北市| 南华县| 海丰县| 闽清县| 齐齐哈尔市| 台安县| 兴海县| 左贡县| 大余县| 静乐县| 名山县| 芜湖市| 姜堰市| 和硕县| 英德市| 定兴县| 大同县| 南丹县| 乐清市| 岳普湖县| 梅州市|