亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

輕松掌握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)品類(lèi),抽象建造者,建造者,導(dǎo)演。

產(chǎn)品類(lèi):

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

抽象建造者:

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

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

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)演類(lèi):

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è)試類(lèi):

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)演類(lèi),完全可能組裝出另一個(gè)不同的產(chǎn)品,因?yàn)閷?dǎo)演類(lèi)控制了產(chǎn)品的組裝,同樣的,如果我們重新實(shí)現(xiàn)抽象構(gòu)建類(lèi),也可能出現(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)文章

最新評(píng)論