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());
}
}