輕松掌握J(rèn)ava建造者模式
建造者模式針對(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í)有所幫助,也希望大家多多支持腳本之家。
- Java使用建造者模式實(shí)現(xiàn)辦理手機(jī)套餐功能詳解
- Java設(shè)計(jì)模式之Builder建造者模式
- Java設(shè)計(jì)模式之建造者模式實(shí)例詳解
- 建造者模式_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
- JAVA設(shè)計(jì)模式之建造者模式原理與用法詳解
- Java Builder Pattern建造者模式詳解及實(shí)例
- Java運(yùn)用設(shè)計(jì)模式中的建造者模式構(gòu)建項(xiàng)目的實(shí)例解析
- 理解java設(shè)計(jì)模式之建造者模式
- 深入解析Java的設(shè)計(jì)模式編程中建造者模式的運(yùn)用
- 講解Java設(shè)計(jì)模式編程中的建造者模式與原型模式
- Java設(shè)計(jì)模式之建造者模式(Builder模式)介紹
- java設(shè)計(jì)模式之建造者模式學(xué)習(xí)
- java實(shí)現(xiàn)建造者模式(Builder Pattern)
相關(guān)文章
SpringBoot+VUE實(shí)現(xiàn)數(shù)據(jù)表格的實(shí)戰(zhàn)
本文將使用VUE+SpringBoot+MybatisPlus,以前后端分離的形式來(lái)實(shí)現(xiàn)數(shù)據(jù)表格在前端的渲染,具有一定的參考價(jià)值,感興趣的可以了解一下2021-08-08
js判斷是否是移動(dòng)設(shè)備登陸網(wǎng)頁(yè)的簡(jiǎn)單方法
這篇文章主要介紹了js判斷是否是移動(dòng)設(shè)備登陸網(wǎng)頁(yè)的簡(jiǎn)單方法,需要的朋友可以參考下2014-02-02
教你用MAT工具分析Java堆內(nèi)存泄漏問(wèn)題的解決方法
今天給大家?guī)?lái)的是關(guān)于Java的相關(guān)知識(shí),文章圍繞著如何使用MAT工具分析Java堆內(nèi)存泄漏問(wèn)題的解決方法展開(kāi),文中有非常詳細(xì)的介紹及代碼示例,需要的朋友可以參考下2021-06-06
解決Java編譯時(shí)錯(cuò)誤:A JNI error has occurred,ple
這篇文章主要介紹了解決Java編譯時(shí)錯(cuò)誤:A JNI error has occurred,please check your installation and try again,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-02-02
Java網(wǎng)絡(luò)編程之UDP協(xié)議詳細(xì)解讀
這篇文章主要介紹了Java網(wǎng)絡(luò)編程之UDP協(xié)議詳細(xì)解讀,UDP協(xié)議全稱是用戶數(shù)據(jù)報(bào)協(xié)議,在網(wǎng)絡(luò)中它與TCP協(xié)議一樣用于處理數(shù)據(jù)包,是一種無(wú)連接的協(xié)議,在OSI模型中,在第四層——傳輸層,處于IP協(xié)議的上一層,需要的朋友可以參考下2023-12-12
java定義通用返回結(jié)果類ResultVO使用示例詳解
這篇文章主要為大家介紹了java定義通用返回結(jié)果類ResultVO使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-09-09
關(guān)于JSON解析中獲取不存在的key問(wèn)題
這篇文章主要介紹了關(guān)于JSON解析中獲取不存在的key問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-07-07

