设计模式学习---建立者模式(BuilderPattern)

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

}

}




备注:转自http://baike.baidu.com/link?url=pWrg_QeuGfac7FBuSmiNp-Kg80_1Nocj8ej_JOwZe_dPg_c1h93qnXUHU34YnGt2Mfz1zAM27afK8whi7csNOkwKJ_LFMOU0O7E1PqBo8EzyQaQr7U4qkU5VJwj0D8RXFRCu1UukyNJTBp5-Xlv39K

相关文章
相关标签/搜索