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

Java運(yùn)用設(shè)計(jì)模式中的建造者模式構(gòu)建項(xiàng)目的實(shí)例解析

 更新時(shí)間:2016年04月26日 09:40:28   作者:匆忙擁擠repeat  
這篇文章主要介紹了Java運(yùn)用設(shè)計(jì)模式中的建造者模式構(gòu)建項(xiàng)目的實(shí)例解析,建造者模式對(duì)外隱藏創(chuàng)建過(guò)程的產(chǎn)品,使用組合的方式,由指揮者來(lái)決定建造的流程,需要的朋友可以參考下

1.建造者模式概念
定義: 將一個(gè)復(fù)雜的對(duì)象構(gòu)建與其表示相分離,使得同樣的構(gòu)建過(guò)程可以創(chuàng)建不同的表示;
核心 : 構(gòu)建與表示分離,同構(gòu)建不同表示
區(qū)別于 抽象工廠模式 :
(1)與抽象工廠模式 相似,因?yàn)樗部梢詣?chuàng)建復(fù)雜對(duì)象。主要的區(qū)別是建造者模式著重于 一步步構(gòu)造一個(gè)復(fù)雜對(duì)象,關(guān)注的是零件類型和裝配工藝的順序 。而抽象工廠模式著重于多個(gè)系列的產(chǎn)品對(duì)象(簡(jiǎn)單的或是復(fù)雜的)。建造者模式在最后的一步返回產(chǎn)品,而對(duì)于抽象工廠來(lái)說(shuō),產(chǎn)品是立即返回的。
(2)在建造者模式里,有個(gè)指導(dǎo)者,由指導(dǎo)者來(lái)管理建造者,用戶是與指導(dǎo)者聯(lián)系的,指導(dǎo)者聯(lián)系建造者最后得到產(chǎn)品。即建造模式可以強(qiáng)制實(shí)行一種分步驟進(jìn)行的建造過(guò)程。

2.它的角色
(1)抽象建造者(Builder)角色:該角色 是用于規(guī)范產(chǎn)品的各個(gè)組成部分,并進(jìn)行抽象,一般獨(dú)立于應(yīng)用程序的邏輯。
(2)具體建造者( ConcreteBuilder )角色:
該角色實(shí) 現(xiàn)出抽象建造者中定義的所有方法,并且返回一個(gè)組建好的產(chǎn)品實(shí)例。
(3)產(chǎn)品( Product )角色:
該角色是建造中的復(fù)雜對(duì)象,一個(gè)系統(tǒng)中會(huì)有多于一個(gè)的產(chǎn)品類,這些產(chǎn)品并不一定有公共的接口,完全可以是不相關(guān)聯(lián)的。
(4)指導(dǎo)者(Director)角色:
該角色負(fù)責(zé)安排已有的模塊的順序,然后告訴建造者 Builder開(kāi)始建造 。 

3.實(shí)例

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

public class BuilderImpl implements Builder { 
  
 @Override 
 public void buildPartA() { 
  System.out.println("建造部件A"); 
 } 
 
 @Override 
 public void buildPartB() { 
  System.out.println("建造部件B"); 
 } 
 
 @Override 
 public void buildPartC() { 
  System.out.println("建造部件C"); 
 } 
 
} 

public class BuilderImpl2 implements Builder { 
  
 @Override 
 public void buildPartA() { 
  System.out.println("建造部件AA"); 
 } 
 
 @Override 
 public void buildPartB() { 
  System.out.println("建造部件BB"); 
 } 
 
 @Override 
 public void buildPartC() { 
  System.out.println("建造部件CC"); 
 } 
 
} 

/** 
 * 指揮者:指導(dǎo) 如何 建造 
 * 組合Builder 
 */ 
public class Director { 
 private Builder builder; 
  
 public Director(Builder builder) { 
  this.builder = builder; 
 } 
 /** 
  * 建造方法:定義了建造的流程 
  * 如果需要其他流程來(lái)實(shí)現(xiàn),再new一個(gè)指揮者Director就可 
  */ 
 public void construct() { 
  System.out.println("director 指揮 builder進(jìn)行建造"); 
  builder.buildPartA(); 
  builder.buildPartB(); 
  builder.buildPartC(); 
 } 
  
} 


public class Director2 { 
 private Builder builder; 
  
 public Director2(Builder builder) { 
  this.builder = builder; 
 } 
 /** 
  * 建造方法:定義了建造的流程 
  * 如果需要其他流程來(lái)實(shí)現(xiàn),再new一個(gè)指揮者Director就可 
  */ 
 public void construct() { 
  System.out.println("director2 指揮 builder進(jìn)行建造"); 
  builder.buildPartB(); 
  builder.buildPartC(); 
  builder.buildPartA(); 
 } 
  
} 

public class Test { 
 public static void main(String[] args) { 
  Builder builder = new BuilderImpl(); 
  Director director = new Director(builder); 
  /* 
   * 同樣的構(gòu)建過(guò)程,不同的模塊(buildPartA、buildPartB、buildPartC)實(shí)現(xiàn), new一個(gè)builder的實(shí)現(xiàn) 
   * 不同的構(gòu)建過(guò)程,new 一個(gè)director 
   * 不同的構(gòu)建過(guò)程,不同的模塊實(shí)現(xiàn), new director,new builder 
   */ 
   
  director.construct(); 
   
  System.out.println(""); 
   
  Builder builder2 = new BuilderImpl2(); 
  Director director2 = new Director(builder2); 
  director2.construct(); 
   
  System.out.println(""); 
   
  Builder builder3 = new BuilderImpl2(); 
  Director2 director3 = new Director2(builder3); 
  director3.construct(); 
 } 
} 

打?。?/p>

director 指揮 builder進(jìn)行建造 
建造部件A 
建造部件B 
建造部件C 
 
director 指揮 builder進(jìn)行建造 
建造部件AA 
建造部件BB 
建造部件CC 
 
director2 指揮 builder進(jìn)行建造 
建造部件BB 
建造部件CC 
建造部件AA 

4.優(yōu)缺點(diǎn)
(1)優(yōu)點(diǎn):
A.可以讓你改變產(chǎn)品的內(nèi)部表示。
B.封裝建筑和代表性的代碼。
C.提供超過(guò)施工工藝的步驟的控制。
(2)缺點(diǎn):
A.需要?jiǎng)?chuàng)造各種不同類型的產(chǎn)品單獨(dú)ConcreteBuilder。

5.使用場(chǎng)景:
(1)當(dāng)創(chuàng)建復(fù)雜對(duì)象的算法應(yīng)該獨(dú)立于該對(duì)象的組成部分以及它們的裝配方式時(shí)。
(2)當(dāng)構(gòu)造過(guò)程必須允許被構(gòu)造的對(duì)象有不同表示時(shí)( 相同的方法,不同的執(zhí)行順序,產(chǎn)生不同的結(jié)果時(shí))。

相關(guān)文章

  • Java數(shù)組的遍歷與求和知識(shí)點(diǎn)

    Java數(shù)組的遍歷與求和知識(shí)點(diǎn)

    本篇文章給大家總計(jì)了Java數(shù)組的遍歷與求和的知識(shí)點(diǎn)以及需要注意的地方,需要的朋友參考學(xué)習(xí)下。
    2018-02-02
  • 實(shí)例解析Json反序列化之ObjectMapper(自定義實(shí)現(xiàn)反序列化方法)

    實(shí)例解析Json反序列化之ObjectMapper(自定義實(shí)現(xiàn)反序列化方法)

    這篇文章主要介紹了實(shí)例解析Json反序列化之ObjectMapper,json自定義序列化的方法,需要的朋友可以了解下。
    2017-09-09
  • Java中超詳細(xì)this與super的概念和用法

    Java中超詳細(xì)this與super的概念和用法

    這篇文章主要介紹了Java中超詳細(xì)this與super的概念和用法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-02-02
  • spring?boot自動(dòng)裝配之@ComponentScan注解用法詳解

    spring?boot自動(dòng)裝配之@ComponentScan注解用法詳解

    @ComponentScan的作用就是根據(jù)定義的掃描路徑,把符合掃描規(guī)則的類裝配到spring容器中,下面這篇文章主要給大家介紹了關(guān)于spring?boot自動(dòng)裝配之@ComponentScan注解用法的相關(guān)資料,需要的朋友可以參考下
    2023-04-04
  • SpringBoot+Shiro學(xué)習(xí)之密碼加密和登錄失敗次數(shù)限制示例

    SpringBoot+Shiro學(xué)習(xí)之密碼加密和登錄失敗次數(shù)限制示例

    本篇文章主要介紹了SpringBoot+Shiro學(xué)習(xí)之密碼加密和登錄失敗次數(shù)限制示例,可以限制登陸次數(shù),有興趣的同學(xué)可以了解一下。
    2017-03-03
  • Java超詳細(xì)透徹講解接口

    Java超詳細(xì)透徹講解接口

    接口是Java中最重要的概念之一,它可以被理解為一種特殊的類,不同的是接口的成員沒(méi)有執(zhí)行體,是由全局常量和公共的抽象方法所組成,本文給大家介紹Java接口,感興趣的朋友一起看看吧
    2022-05-05
  • Java語(yǔ)言中Swing組件編程詳解

    Java語(yǔ)言中Swing組件編程詳解

    這篇文章主要為大家介紹了Java語(yǔ)言中Swing組件編程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-10-10
  • Java布隆過(guò)濾器的應(yīng)用實(shí)例

    Java布隆過(guò)濾器的應(yīng)用實(shí)例

    這篇文章主要介紹了Java布隆過(guò)濾器的應(yīng)用實(shí)例,在程序的世界中,布隆過(guò)濾器是程序員的一把利器,利用它可以快速地解決項(xiàng)目中一些比較棘手的問(wèn)題,如網(wǎng)頁(yè)?URL?去重、垃圾郵件識(shí)別、大集合中重復(fù)元素的判斷和緩存穿透等問(wèn)題,需要的朋友可以參考下
    2023-11-11
  • Java并發(fā)編程 interrupt()方法示例詳解

    Java并發(fā)編程 interrupt()方法示例詳解

    interrrupt()方法可以用來(lái)打斷正在運(yùn)行的線程,也可以打斷sleep()、wait()、join()情況下的線程,但是這些情況下被打斷線程的打斷標(biāo)記不同,這篇文章主要介紹了Java并發(fā)編程 interrupt()方法示例詳解,需要的朋友可以參考下
    2023-06-06
  • java中Vector類的常用方法詳解

    java中Vector類的常用方法詳解

    這篇文章主要為大家詳細(xì)介紹了java中Vector類的常用方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2022-02-02

最新評(píng)論

永嘉县| 安陆市| 梁河县| 上杭县| 札达县| 镇平县| 屏南县| 洱源县| 兴隆县| 钦州市| 图木舒克市| 沁源县| 平阴县| 丰宁| 新宾| 高淳县| 通海县| 新沂市| 虹口区| 洞头县| 鱼台县| 新疆| 蓬莱市| 永登县| 海淀区| 新乡市| 临沂市| 波密县| 遂溪县| 吉林省| 云南省| 蓬莱市| 左权县| 赤壁市| 西藏| 高台县| 六盘水市| 金沙县| 宁乡县| 兰州市| 姜堰市|