一膏萧、定義
建造者模式也稱生成器模式湾笛,創(chuàng)建一個復(fù)雜對象的創(chuàng)建型模式饮怯,將其構(gòu)建復(fù)雜對象的過程和它的部件解耦,使構(gòu)建過程和部件的分離開嚎研,使得構(gòu)建過程和部件都可以自由拓展硕淑,兩者之間的耦合降到最低。
二嘉赎、簡單示例
public class BuilderMode {
//創(chuàng)建實體類
private String mName;
private String mAge;
private BuilderMode(String name, String age) {
mName = name;
mAge = age;
}
public String getName() {
return mName;
}
public String getAge() {
return mAge;
}
//創(chuàng)建builder
public static class Builder {
private String name;
private String age;
public Builder setName(String name) {
this.name = name;
return this;
}
public Builder setAge(String age) {
this.age = age;
return this;
}
public BuilderMode build() {
return new BuilderMode(name, age);
}
}
}
//進(jìn)行創(chuàng)建調(diào)用
BuilderMode builder = new BuilderMode.Builder().setName("xxx").setAge("xx").build();
String age = builder.getAge();
String name = builder.getName();
Log.e("TAG", "name:" + name + "-age:" + age);
三置媳、使用場景
- 當(dāng)創(chuàng)建復(fù)雜對象的算法應(yīng)該獨立于該對象的組成部分以及它們的裝配方式時。
- 相同的方法公条,不同的執(zhí)行順序拇囊,產(chǎn)生不同的事件結(jié)果時。
- 多個部件或零件都可以被裝配到一個對象中靶橱,但是產(chǎn)生的運行結(jié)果又不相同時寥袭。
- 產(chǎn)品類非常復(fù)雜,或者產(chǎn)品類中的調(diào)用順序不同而產(chǎn)生了不同的效能关霸。
- 在創(chuàng)建一些復(fù)雜的對象時传黄,這些對象的內(nèi)部組成構(gòu)件間的建造順序是穩(wěn)定的,但是
對象的內(nèi)部組成構(gòu)件面臨著復(fù)雜的變化队寇。
四膘掰、優(yōu)缺點
優(yōu)點
- 使用建造者模式可以使客戶端不必知道產(chǎn)品內(nèi)部組成的細(xì)節(jié)。
- 具體的建造者類之間是相互獨立的,容易擴展识埋。
- 由于具體的建造者是獨立的凡伊,因此可以對建造過程逐步細(xì)化,而不對其他的模塊產(chǎn)
生任何影響窒舟。
缺點
- 產(chǎn)生多余的 Build 對象