欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

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

3.實例

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; 
 } 
 /** 
  * 建造方法:定義了建造的流程 
  * 如果需要其他流程來實現(xiàn),再new一個指揮者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; 
 } 
 /** 
  * 建造方法:定義了建造的流程 
  * 如果需要其他流程來實現(xiàn),再new一個指揮者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)建過程,不同的模塊(buildPartA、buildPartB、buildPartC)實現(xiàn), new一個builder的實現(xiàn) 
   * 不同的構(gòu)建過程,new 一個director 
   * 不同的構(gòu)建過程,不同的模塊實現(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.提供超過施工工藝的步驟的控制。
(2)缺點(diǎn):
A.需要創(chuàng)造各種不同類型的產(chǎn)品單獨(dú)ConcreteBuilder。

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

相關(guān)文章

  • 淺析Spring Security登錄驗證流程源碼

    淺析Spring Security登錄驗證流程源碼

    這篇文章主要介紹了Spring Security登錄驗證流程源碼解析,本文結(jié)合源碼講解登錄驗證流程,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-11-11
  • Java開發(fā)druid數(shù)據(jù)連接池maven方式簡易配置流程示例

    Java開發(fā)druid數(shù)據(jù)連接池maven方式簡易配置流程示例

    本篇文章主要為大家介紹了java開發(fā)中druid數(shù)據(jù)連接池maven方式的簡易配置流程示例,文中附含詳細(xì)的代碼示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2021-10-10
  • Java設(shè)計模式之初識行為型模式

    Java設(shè)計模式之初識行為型模式

    今天帶大家學(xué)習(xí)Java設(shè)計模式的相關(guān)知識點(diǎn),文中對Java行為型模式做了非常詳細(xì)的介紹及代碼示例,對正在學(xué)習(xí)java的小伙伴們很有幫助,需要的朋友可以參考下
    2021-06-06
  • SpringMVC結(jié)構(gòu)簡介及常用注解匯總

    SpringMVC結(jié)構(gòu)簡介及常用注解匯總

    這篇文章主要介紹了SpringMVC結(jié)構(gòu)簡介及常用注解匯總,幫助大家更好的理解和學(xué)習(xí)使用SpringMVC,感興趣的朋友可以了解下
    2021-03-03
  • 2022最新Java泛型詳解(360度無死角介紹)

    2022最新Java泛型詳解(360度無死角介紹)

    Java泛型(generics)是JDK5中引入的一個新特性,泛型提供了 編譯時類型安全監(jiān)測機(jī)制,該機(jī)制允許我們在編譯時檢測到非法的類型數(shù)據(jù)結(jié)構(gòu),這篇文章主要介紹了java泛型的基本概念及使用詳解,感興趣的朋友跟隨小編一起看看吧
    2022-10-10
  • Spring的Bean生命周期之BeanDefinition詳解

    Spring的Bean生命周期之BeanDefinition詳解

    這篇文章主要介紹了Spring的Bean生命周期之BeanDefinition詳解,在spring bean創(chuàng)建過程 依賴 BeanDefinition 中的信息處理bean的生產(chǎn),BeanDefinition 是 Spring Framework 中定義 Bean 的配置元信息接口,需要的朋友可以參考下
    2023-12-12
  • java一個數(shù)據(jù)整理的方法代碼實例

    java一個數(shù)據(jù)整理的方法代碼實例

    這篇文章主要介紹了java一個數(shù)據(jù)整理的方法代碼實例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-09-09
  • spring-boot集成spring-security的oauth2實現(xiàn)github登錄網(wǎng)站的示例

    spring-boot集成spring-security的oauth2實現(xiàn)github登錄網(wǎng)站的示例

    本篇文章主要介紹了spring-boot集成spring-security的oauth2實現(xiàn)github登錄網(wǎng)站的示例,非常具有實用價值,需要的朋友可以參考下
    2017-10-10
  • Map集合中獲取key-value值的實現(xiàn)方法

    Map集合中獲取key-value值的實現(xiàn)方法

    這篇文章主要介紹了Map集合中獲取key-value值的實現(xiàn)方法,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • Spring Cloud Consul的服務(wù)注冊與發(fā)現(xiàn)

    Spring Cloud Consul的服務(wù)注冊與發(fā)現(xiàn)

    這篇文章主要介紹了Spring Cloud Consul服務(wù)注冊與發(fā)現(xiàn)的實現(xiàn)方法,幫助大家更好的理解和學(xué)習(xí)使用spring框架,感興趣的朋友可以了解下
    2021-02-02

最新評論