輕松掌握J(rèn)ava建造者模式
建造者模式針對的是復(fù)雜對象的構(gòu)建,比如一個產(chǎn)品有多個部分構(gòu)成,每個部分都可以單獨(dú)進(jìn)行生產(chǎn),這時候就可以用建造者模式,由Builder構(gòu)造產(chǎn)品的每個部分,然后又director完成最后產(chǎn)品的組裝。
特點(diǎn):
1、分工更加明確,組建和構(gòu)造分開,能更好的控制產(chǎn)品的生產(chǎn)。
2、容易擴(kuò)展,有新的需求的時候,只要實(shí)現(xiàn)Builder借口就可以了。
企業(yè)級開發(fā)和常用框架中的應(yīng)用:JMail
組成:產(chǎn)品類,抽象建造者,建造者,導(dǎo)演。
產(chǎn)品類:
public class Product{
private String partA;//產(chǎn)品的某個部分,實(shí)際開發(fā)中可能對應(yīng)一個類
private String partB;//產(chǎn)品的某個部分,實(shí)際開發(fā)中可能對應(yīng)一個類
private String partC;//產(chǎn)品的某個部分,實(shí)際開發(fā)中可能對應(yīng)一個類
//構(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)品的某一個部分
product.setPartA(partA);
}
public void builderPartB(){
String partB = new String();//模擬工廠方法生產(chǎn)產(chǎn)品的某一個部分
product.setPartB(partB);
}
public void setPartC(){
String partC = new String();//模擬工廠方法生產(chǎn)產(chǎn)品的某一個部分
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();
}
}
測試類:
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)演類,完全可能組裝出另一個不同的產(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)這兩者驚人的相似,但為什么還會分出兩種不同的設(shè)計模式呢,其實(shí)重點(diǎn)就在產(chǎn)品的復(fù)雜程度和抽象程度上,建造者模式比抽象工廠模式更加的抽象化,復(fù)雜化,也就是說建造者模式應(yīng)對的產(chǎn)品比抽象工廠應(yīng)對的產(chǎn)品更加復(fù)雜,同時,在產(chǎn)品生產(chǎn)流程長更加的抽象。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- Java使用建造者模式實(shí)現(xiàn)辦理手機(jī)套餐功能詳解
- Java設(shè)計模式之Builder建造者模式
- Java設(shè)計模式之建造者模式實(shí)例詳解
- 建造者模式_動力節(jié)點(diǎn)Java學(xué)院整理
- JAVA設(shè)計模式之建造者模式原理與用法詳解
- Java Builder Pattern建造者模式詳解及實(shí)例
- Java運(yùn)用設(shè)計模式中的建造者模式構(gòu)建項目的實(shí)例解析
- 理解java設(shè)計模式之建造者模式
- 深入解析Java的設(shè)計模式編程中建造者模式的運(yùn)用
- 講解Java設(shè)計模式編程中的建造者模式與原型模式
- Java設(shè)計模式之建造者模式(Builder模式)介紹
- java設(shè)計模式之建造者模式學(xué)習(xí)
- java實(shí)現(xiàn)建造者模式(Builder Pattern)
相關(guān)文章
Spring?Boot+Vue實(shí)現(xiàn)Socket通知推送的完整步驟
最近工作中涉及消息通知功能的開發(fā),所以下面這篇文章主要給大家介紹了關(guān)于Spring?Boot+Vue實(shí)現(xiàn)Socket通知推送的完整步驟,文中通過實(shí)例代碼以及圖文介紹的非常詳細(xì),需要的朋友可以參考下2023-04-04
Spring Boot2與Spring Boot3的區(qū)別小結(jié)
SpringBoot2和SpringBoot3之間有一些重要的區(qū)別,本文就來探討SpringBoot2和SpringBoot3之間的區(qū)別,具有一定的參考價值,感興趣的可以了解一下2023-10-10
劍指Offer之Java算法習(xí)題精講鏈表與數(shù)組專項訓(xùn)練
跟著思路走,之后從簡單題入手,反復(fù)去看,做過之后可能會忘記,之后再做一次,記不住就反復(fù)做,反復(fù)尋求思路和規(guī)律,慢慢積累就會發(fā)現(xiàn)質(zhì)的變化2022-03-03
SpringMVC + servlet3.0 文件上傳的配置和實(shí)現(xiàn)代碼
本篇文章主要介紹了SpringMVC + servlet3.0 文件上傳的配置和實(shí)現(xiàn)代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下。2017-04-04
如何在java 8 stream表達(dá)式實(shí)現(xiàn)if/else邏輯
這篇文章主要介紹了如何在java 8 stream表達(dá)式實(shí)現(xiàn)if/else邏輯,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-04-04
在java中使用SPI創(chuàng)建可擴(kuò)展的應(yīng)用程序操作
這篇文章主要介紹了在java中使用SPI創(chuàng)建可擴(kuò)展的應(yīng)用程序操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-09-09
Java日常練習(xí)題,每天進(jìn)步一點(diǎn)點(diǎn)(18)
下面小編就為大家?guī)硪黄狫ava基礎(chǔ)的幾道練習(xí)題(分享)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧,希望可以幫到你2021-07-07

