總章目錄,設(shè)計模式(一)基本介紹
一、簡介
建造者模式(Builder Pattern) 又名生成器模式,是一種對象構(gòu)建模式。它可以將復(fù)雜對象的建造過程抽象出來(抽象類別),使這個抽象過程的不同實現(xiàn)方法可以構(gòu)造出不同表現(xiàn)(屬性)的對象。
建造者模式 是一步一步創(chuàng)建一個復(fù)雜的對象,它允許用戶只通過指定復(fù)雜對象的類型和內(nèi)容就可以構(gòu)建它們,用戶不需要知道內(nèi)部的具體構(gòu)建細節(jié)。
UML類圖:
1、抽象建造者(Builder):抽象接口或類,以規(guī)范產(chǎn)品對象的各個組成成分的建造。
2、具體建造者(ConcreteBuilder):1.實現(xiàn)抽象建造者Builder所聲明的接口,給出一步一步地完成創(chuàng)建產(chǎn)品實例的操作。2.在建造過程完成后,提供產(chǎn)品的實例。
3、指導(dǎo)者(Director):擔任這個角色的類調(diào)用具體建造者角色以創(chuàng)建產(chǎn)品對象。
4、產(chǎn)品(Product):產(chǎn)品便是建造中的復(fù)雜對象。

優(yōu)點:
- 客戶端不必知道產(chǎn)品內(nèi)部組成的細節(jié),將產(chǎn)品本身與產(chǎn)品的創(chuàng)建過程解耦,使得相同的創(chuàng)建過程可以創(chuàng)建不同的產(chǎn)品對象。
- 每一個具體建造者都相對獨立,而與其他的具體建造者無關(guān),因此可以很方便地替換具體建造者或增加新的具體建造者, 用戶使用不同的具體建造者即可得到不同的產(chǎn)品對象 。
- 可以更加精細地控制產(chǎn)品的創(chuàng)建過程 。將復(fù)雜產(chǎn)品的創(chuàng)建步驟分解在不同的方法中,使得創(chuàng)建過程更加清晰,也更方便使用程序來控制創(chuàng)建過程。
- 增加新的具體建造者無須修改原有類庫的代碼,指揮者類針對抽象建造者類編程,系統(tǒng)擴展方便,符合 “開閉原則”
缺點:
- 建造者模式所創(chuàng)建的產(chǎn)品一般具有較多的共同點,因此其使用范圍受限。
- 產(chǎn)品的內(nèi)部變化復(fù)雜,會導(dǎo)致系統(tǒng)變得很龐大。
二、實現(xiàn)
以下方式為簡單的實現(xiàn),通常會在create時賦值,賦值時僅保存變量
public class Summoner {
private String shoes;
private String arms;
private String name;
//省略 get set
public static class Builder {
Summoner summoner;
public void Builder(){
summoner = new Summoner();
}
public Builder setArms(String arms) {
summoner.setArms(arms);
return this;
}
public Builder setShoes(String shoes) {
summoner.setShoes(shoes);
return this;
}
public Builder setName(String name) {
summoner.setName(name);
return this;
}
public Summoner build() {
return summoner;
}
}
}
public class client {
public static void main(String[] args) {
Summoner summoner = new Summoner.Builder()
.setName("武器大師")
.setArms("三相之力")
.setShoes("水銀鞋");
System.out.println(summoner.toString());
}
}