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

輕松掌握J(rèn)ava建造者模式

 更新時(shí)間:2016年10月10日 11:32:03   作者:斷了聯(lián)系  
這篇文章主要幫助大家輕松掌握J(rèn)ava建造者模式,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

建造者模式針對(duì)的是復(fù)雜對(duì)象的構(gòu)建,比如一個(gè)產(chǎn)品有多個(gè)部分構(gòu)成,每個(gè)部分都可以單獨(dú)進(jìn)行生產(chǎn),這時(shí)候就可以用建造者模式,由Builder構(gòu)造產(chǎn)品的每個(gè)部分,然后又director完成最后產(chǎn)品的組裝。

特點(diǎn):

    1、分工更加明確,組建和構(gòu)造分開(kāi),能更好的控制產(chǎn)品的生產(chǎn)。

    2、容易擴(kuò)展,有新的需求的時(shí)候,只要實(shí)現(xiàn)Builder借口就可以了。

企業(yè)級(jí)開(kāi)發(fā)和常用框架中的應(yīng)用:JMail

組成:產(chǎn)品類,抽象建造者,建造者,導(dǎo)演。

產(chǎn)品類:

public class Product{
 private String partA;//產(chǎn)品的某個(gè)部分,實(shí)際開(kāi)發(fā)中可能對(duì)應(yīng)一個(gè)類 
 private String partB;//產(chǎn)品的某個(gè)部分,實(shí)際開(kāi)發(fā)中可能對(duì)應(yīng)一個(gè)類 
 private String partC;//產(chǎn)品的某個(gè)部分,實(shí)際開(kāi)發(fā)中可能對(duì)應(yīng)一個(gè)類 
 //構(gòu)造器及set、get方法
}

抽象建造者:

//也可以是抽象類
public interface Builder{ 
 public void setPartA(String partA); 
 public void setPartB(String partB); 
 public void setPartC(String partC);
}

建造者實(shí)現(xiàn)類:

public class BuilderImpl implements Builder{
 
 private Product product;
 
 public BuilderImpl(){
 product = new Product();
 }
 
 public void builderPartA(){
 String partA = new String();//模擬工廠方法生產(chǎn)產(chǎn)品的某一個(gè)部分
 product.setPartA(partA);
 }
 
 public void builderPartB(){
 String partB = new String();//模擬工廠方法生產(chǎn)產(chǎn)品的某一個(gè)部分
 product.setPartB(partB);
 }
 
 public void setPartC(){
 String partC = new String();//模擬工廠方法生產(chǎn)產(chǎn)品的某一個(gè)部分
 product.setPartC(partC);
 }
 
 public Product getProduct(){
 return this.product;
 }
}

導(dǎo)演類:

public class Director{
 private Builder b ;
 
 public Director(Builder newB){
 this.b = newB;
 }
 
 public void createBuilder(Builder b){
 this.b = b;
 }
 
 public Product constructProduct(){
 b.builderPartA();
 b.builderPartB();
 b.builderPartC();
 }
}

測(cè)試類:

public class Demo{
 public static void main(String[] args){
 Builder b = new BuilderImpl();
 Director d = new Director();
 d.createBuilder(b);
 Product p = c.constructProduct();
 }
}

從上面的例子中我們不難發(fā)現(xiàn),如果我們另外實(shí)現(xiàn)導(dǎo)演類,完全可能組裝出另一個(gè)不同的產(chǎn)品,因?yàn)閷?dǎo)演類控制了產(chǎn)品的組裝,同樣的,如果我們重新實(shí)現(xiàn)抽象構(gòu)建類,也可能出現(xiàn)完全不同的產(chǎn)品,所以,從中可以發(fā)現(xiàn),構(gòu)建者模式更加的抽象化,流程化。

相比于抽象工廠模式,不難發(fā)現(xiàn)這兩者驚人的相似,但為什么還會(huì)分出兩種不同的設(shè)計(jì)模式呢,其實(shí)重點(diǎn)就在產(chǎn)品的復(fù)雜程度和抽象程度上,建造者模式比抽象工廠模式更加的抽象化,復(fù)雜化,也就是說(shuō)建造者模式應(yīng)對(duì)的產(chǎn)品比抽象工廠應(yīng)對(duì)的產(chǎn)品更加復(fù)雜,同時(shí),在產(chǎn)品生產(chǎn)流程長(zhǎng)更加的抽象。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Spring?Boot+Vue實(shí)現(xiàn)Socket通知推送的完整步驟

    Spring?Boot+Vue實(shí)現(xiàn)Socket通知推送的完整步驟

    最近工作中涉及消息通知功能的開(kāi)發(fā),所以下面這篇文章主要給大家介紹了關(guān)于Spring?Boot+Vue實(shí)現(xiàn)Socket通知推送的完整步驟,文中通過(guò)實(shí)例代碼以及圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2023-04-04
  • Spring Boot2與Spring Boot3的區(qū)別小結(jié)

    Spring Boot2與Spring Boot3的區(qū)別小結(jié)

    SpringBoot2和SpringBoot3之間有一些重要的區(qū)別,本文就來(lái)探討SpringBoot2和SpringBoot3之間的區(qū)別,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-10-10
  • Java實(shí)現(xiàn)文件讀取和寫(xiě)入過(guò)程解析

    Java實(shí)現(xiàn)文件讀取和寫(xiě)入過(guò)程解析

    這篇文章主要介紹了Java實(shí)現(xiàn)文件讀取和寫(xiě)入過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值。,需要的朋友可以參考下
    2019-10-10
  • spring cloud如何集成nacos配置中心

    spring cloud如何集成nacos配置中心

    這篇文章主要介紹了spring cloud如何集成nacos配置中心操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • 劍指Offer之Java算法習(xí)題精講鏈表與數(shù)組專項(xiàng)訓(xùn)練

    劍指Offer之Java算法習(xí)題精講鏈表與數(shù)組專項(xiàng)訓(xùn)練

    跟著思路走,之后從簡(jiǎn)單題入手,反復(fù)去看,做過(guò)之后可能會(huì)忘記,之后再做一次,記不住就反復(fù)做,反復(fù)尋求思路和規(guī)律,慢慢積累就會(huì)發(fā)現(xiàn)質(zhì)的變化
    2022-03-03
  • SpringMVC + servlet3.0 文件上傳的配置和實(shí)現(xiàn)代碼

    SpringMVC + servlet3.0 文件上傳的配置和實(shí)現(xiàn)代碼

    本篇文章主要介紹了SpringMVC + servlet3.0 文件上傳的配置和實(shí)現(xiàn)代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。
    2017-04-04
  • IDEA配置碼云Gitee的使用詳解

    IDEA配置碼云Gitee的使用詳解

    這篇文章主要介紹了IDEA配置碼云Gitee的使用,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-12-12
  • 如何在java 8 stream表達(dá)式實(shí)現(xiàn)if/else邏輯

    如何在java 8 stream表達(dá)式實(shí)現(xiàn)if/else邏輯

    這篇文章主要介紹了如何在java 8 stream表達(dá)式實(shí)現(xiàn)if/else邏輯,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-04-04
  • 在java中使用SPI創(chuàng)建可擴(kuò)展的應(yīng)用程序操作

    在java中使用SPI創(chuàng)建可擴(kuò)展的應(yīng)用程序操作

    這篇文章主要介紹了在java中使用SPI創(chuàng)建可擴(kuò)展的應(yīng)用程序操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-09-09
  • Java日常練習(xí)題,每天進(jìn)步一點(diǎn)點(diǎn)(18)

    Java日常練習(xí)題,每天進(jìn)步一點(diǎn)點(diǎn)(18)

    下面小編就為大家?guī)?lái)一篇Java基礎(chǔ)的幾道練習(xí)題(分享)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧,希望可以幫到你
    2021-07-07

最新評(píng)論