java23種設計模式之一,英文叫Builder Pattern。其核心思想是將一個「複雜對象的構建算法」與它的「部件及組裝方式」分離,使得構件算法和組裝方式能夠獨立應對變化;複用一樣的構建算法能夠建立不一樣的表示,不一樣的構建過程能夠複用相同的部件組裝方式。java
java23種設計模式之一,英文叫Builder Pattern。其核心思想是將一個「複雜對象的構建算法」與它的「部件及組裝方式」分離,使得構件算法和組裝方式能夠獨立應對變化;複用一樣的構建算法能夠建立不一樣的表示,不一樣的構建過程能夠複用相同的部件組裝方式。算法
在建立者模式中,客戶端再也不負責對象的建立與組裝,而是把這個對象建立的責任交給其具體的建立者類,把組裝的責任交給組裝類,客戶端只負責對象的調用,從而明確了各個類的職責。設計模式
雖然利用建立者模式能夠建立出不一樣類型的產品,可是若是產品之間的差別巨大,則須要編寫多個建立者類才能實現,若是這是結合工廠模式更好。ide
建立者模式主要由五個部分構成:組裝類,抽象建立者類,實現抽象建立者類的具體建立者類,抽象產品和實現抽象產品的具體產品類。測試
// Personui
public class Person {this
private String head;url
private String body;設計
private String foot;orm
public String getHead() {
return head;
}
public void setHead(String head) {
this.head= head;
}
public String getBody() {
return body;
}
public String getFoot() {
return foot;
}
public void setFoot(String foot) {
this.foot= foot;
}
public void setBody(String body) {
this.body= body;
}
}
//Builder接口
public interface PersonBuilder{
void buildHead();
void buildBody();
void buildFoot();
Person buildPerson();
}
//Builder實現:人類
publicclass HumanBuilder implements PersonBuilder {
private Person person;
public HumanBuilder(){
this.person=new Person();
}
public void buildBody() {
this.person.setBody("建立 人類 身體!");
}
publicvoid buildFoot() {
this.person.setFoot("建立 人類 腳!");
}
publicvoid buildHead() {
this.person.setHead("建立 人類 頭!");
}
public Person buildPerson() {
return person;
}
}
//Builder實現:變形金剛
publicclass TransformerBuilder implements PersonBuilder {
private Person person;
public TransformerBuilder(){
this.person=newPerson();
}
publicvoid buildBody() {
this.person.setBody("建立 變形金剛 身體!");
}
public void buildFoot() {
this.person.setFoot("建立 變形金剛 腳!");
}
publicvoid buildHead() {
this.person.setHead("建立 變形金剛 頭!");
}
public Person buildPerson() {
return person;
}
}
//Director構建嚮導
publicclass PersonDirector {
public Person constructPerson(PersonBuilder pb) {
pb.buildHead();
pb.buildBody();
pb.buildFoot();
return pb.buildPerson();
}
}
//測試
publicclass Test {
publicstaticvoid main(String[] args) {
PersonDirector pd = new PersonDirector();
Person person = pd.constructPerson(new HumanBuilder());
System.out.println(person.getBody());
System.out.println(person.getFoot());
System.out.println(person.getHead() +" \n");
Person transformer = pd.constructPerson(newTransformerBuilder());
System.out.println(transformer.getBody());
System.out.println(transformer.getFoot());
System.out.println(transformer.getHead());
}
}