(设计模式)建造者模式
建造者模式:通过建造,类似建房子一样,将复杂的建造工程,进行拆分成独立的方法个体,需要建立什么样子的对象就进行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()); }