輕松掌握J(rèn)ava建造者模式
建造者模式針對的是復(fù)雜對象的構(gòu)建,比如一個產(chǎn)品有多個部分構(gòu)成,每個部分都可以單獨進(jìn)行生產(chǎn),這時候就可以用建造者模式,由Builder構(gòu)造產(chǎn)品的每個部分,然后又director完成最后產(chǎn)品的組裝。
特點:
1、分工更加明確,組建和構(gòu)造分開,能更好的控制產(chǎn)品的生產(chǎn)。
2、容易擴(kuò)展,有新的需求的時候,只要實現(xiàn)Builder借口就可以了。
企業(yè)級開發(fā)和常用框架中的應(yīng)用:JMail
組成:產(chǎn)品類,抽象建造者,建造者,導(dǎo)演。
產(chǎn)品類:
public class Product{
private String partA;//產(chǎn)品的某個部分,實際開發(fā)中可能對應(yīng)一個類
private String partB;//產(chǎn)品的某個部分,實際開發(fā)中可能對應(yīng)一個類
private String partC;//產(chǎn)品的某個部分,實際開發(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);
}
建造者實現(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),如果我們另外實現(xiàn)導(dǎo)演類,完全可能組裝出另一個不同的產(chǎn)品,因為導(dǎo)演類控制了產(chǎn)品的組裝,同樣的,如果我們重新實現(xiàn)抽象構(gòu)建類,也可能出現(xiàn)完全不同的產(chǎn)品,所以,從中可以發(fā)現(xiàn),構(gòu)建者模式更加的抽象化,流程化。
相比于抽象工廠模式,不難發(fā)現(xiàn)這兩者驚人的相似,但為什么還會分出兩種不同的設(shè)計模式呢,其實重點就在產(chǎn)品的復(fù)雜程度和抽象程度上,建造者模式比抽象工廠模式更加的抽象化,復(fù)雜化,也就是說建造者模式應(yīng)對的產(chǎn)品比抽象工廠應(yīng)對的產(chǎn)品更加復(fù)雜,同時,在產(chǎn)品生產(chǎn)流程長更加的抽象。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- Java使用建造者模式實現(xiàn)辦理手機套餐功能詳解
- Java設(shè)計模式之Builder建造者模式
- Java設(shè)計模式之建造者模式實例詳解
- 建造者模式_動力節(jié)點Java學(xué)院整理
- JAVA設(shè)計模式之建造者模式原理與用法詳解
- Java Builder Pattern建造者模式詳解及實例
- Java運用設(shè)計模式中的建造者模式構(gòu)建項目的實例解析
- 理解java設(shè)計模式之建造者模式
- 深入解析Java的設(shè)計模式編程中建造者模式的運用
- 講解Java設(shè)計模式編程中的建造者模式與原型模式
- Java設(shè)計模式之建造者模式(Builder模式)介紹
- java設(shè)計模式之建造者模式學(xué)習(xí)
- java實現(xiàn)建造者模式(Builder Pattern)
相關(guān)文章
SpringBoot+VUE實現(xiàn)數(shù)據(jù)表格的實戰(zhàn)
本文將使用VUE+SpringBoot+MybatisPlus,以前后端分離的形式來實現(xiàn)數(shù)據(jù)表格在前端的渲染,具有一定的參考價值,感興趣的可以了解一下2021-08-08
js判斷是否是移動設(shè)備登陸網(wǎng)頁的簡單方法
這篇文章主要介紹了js判斷是否是移動設(shè)備登陸網(wǎng)頁的簡單方法,需要的朋友可以參考下2014-02-02
教你用MAT工具分析Java堆內(nèi)存泄漏問題的解決方法
今天給大家?guī)淼氖顷P(guān)于Java的相關(guān)知識,文章圍繞著如何使用MAT工具分析Java堆內(nèi)存泄漏問題的解決方法展開,文中有非常詳細(xì)的介紹及代碼示例,需要的朋友可以參考下2021-06-06
解決Java編譯時錯誤:A JNI error has occurred,ple
這篇文章主要介紹了解決Java編譯時錯誤:A JNI error has occurred,please check your installation and try again,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-02-02
Java網(wǎng)絡(luò)編程之UDP協(xié)議詳細(xì)解讀
這篇文章主要介紹了Java網(wǎng)絡(luò)編程之UDP協(xié)議詳細(xì)解讀,UDP協(xié)議全稱是用戶數(shù)據(jù)報協(xié)議,在網(wǎng)絡(luò)中它與TCP協(xié)議一樣用于處理數(shù)據(jù)包,是一種無連接的協(xié)議,在OSI模型中,在第四層——傳輸層,處于IP協(xié)議的上一層,需要的朋友可以參考下2023-12-12
java定義通用返回結(jié)果類ResultVO使用示例詳解
這篇文章主要為大家介紹了java定義通用返回結(jié)果類ResultVO使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-09-09

