(设计模式)建造者模式

建造者模式:通过建造,类似建房子一样,将复杂的建造工程,进行拆分成独立的方法个体,需要建立什么样子的对象就进行builder建造,最终建立成一个复杂对象。
通过建造者模式,把复杂的过程进行拆分和封装。
 
person 实体类
/**
 * 人
 * 建造的基类
 * Created by 灰灰 on 2017/6/29.
 */
public class Person {
    private String head;
    private String body;
    private String foot;

    public String getHead() {
        return head;
    }

    public void setHead(String head) {
        this.head = head;
    }

    public String getBody() {
        return body;
    }

    public void setBody(String body) {
        this.body = body;
    }

    public String getFoot() {
        return foot;
    }

    public void setFoot(String foot) {
        this.foot = foot;
    }
}
PersonBuilder 建造者接口,负责建造和返回建造的对象
/**
 * 建造者模式
 */
public interface PersonBuilder {
    /**
     * 建造的各个方法
     * 在里面执行复制的建造
    * @Author : 灰灰
    * @Date : 2017/6/29 17:15
    */
    void buildHead();
    void buildBody();
    void buildFoot();
    /**
     * 返回建造好的对象
    * @Author : 灰灰
    * @Date : 2017/6/29 17:15
    */
    Person buildPerson();
}
ManBuilder 实现
/**
 * 建造男人
 * Created by 灰灰 on 2017/6/29.
 */
public class ManBuilder implements PersonBuilder {

    public Person buildPerson() {
        return person;
    }
    @Override
    public void buildHead() {
        person.setHead("建造男人的头");
    }

    @Override
    public void buildBody() {
        person.setBody("建造男人的小肚腩");
    }

    @Override
    public void buildFoot() {
        person.setFoot("建造男人的大长腿");
    }
    public ManBuilder() {
        person = new Man();
    }

    Person person;
}
personDirector 要建造什么样的对象,建造的过程
/**
 * Created by 灰灰 on 2017/6/29.
 */
public class PersonDirector {

    public Person constructPerson(PersonBuilder personBuilder) {
        personBuilder.buildBody();
        personBuilder.buildFoot();
        personBuilder.buildHead();
        return personBuilder.buildPerson();
    }
}
测试
public static void main (String[] args) {
    PersonDirector pd = new PersonDirector();
    Person person = pd.constructPerson(new ManBuilder());
    System.out.println(person.getBody());
    System.out.println(person.getFoot());
    System.out.println(person.getHead());
}

 

posted @ 2017-07-04 09:39  有女朋友的程序猿  阅读(113)  评论(0编辑  收藏  举报