对于建造者模式,小编个人理解为就是一个组装型的模式。
建造者模式 概述 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 适用性 1.当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时。 2.当构造过程必须允许被构造的对象有不同的表示时。 参与者 1.Builder 为创建一个Product对象的各个部件指定抽象接口。 2.ConcreteBuilder 实现Builder的接口以构造和装配该产品的各个部件。 定义并明确它所创建的表示。 提供一个检索产品的接口。 3.Director 构造一个使用Builder接口的对象。 4.Product 表示被构造的复杂对象。ConcreteBuilder创建该产品的内部表示并定义它的装配过程。 包含定义组成部件的类,包括将这些部件装配成最终产品的接口。
上代码,小编也自己研究了。
1 public class Test{ 2 3 public static void main(String[] args) { 4 PersonDirector pd = new PersonDirector(); 5 Person person = pd.constructPerson(new ManBuilder()); 6 System.out.println(person.getBody()); 7 System.out.println(person.getFoot()); 8 System.out.println(person.getHead()); 9 } 10 }
1 public class PersonDirector { 2 3 public Person constructPerson(PersonBuilder pb) { 4 pb.buildHead(); 5 pb.buildBody(); 6 pb.buildFoot(); 7 return pb.buildPerson(); 8 } 9 }
1 public class ManBuilder implements PersonBuilder { 2 3 Person person; 4 5 public ManBuilder() { 6 person = new Man(); 7 } 8 9 public void buildBody() { 10 person.setBody("建造男人的身体"); 11 } 12 13 public void buildFoot() { 14 person.setFoot("建造男人的脚"); 15 } 16 17 public void buildHead() { 18 person.setHead("建造男人的头"); 19 } 20 21 public Person buildPerson() { 22 return person; 23 } 24 }
1 public interface PersonBuilder { 2 3 void buildHead(); 4 5 void buildBody(); 6 7 void buildFoot(); 8 9 Person buildPerson(); 10 }
1 public class Person { 2 3 private String head; 4 5 private String body; 6 7 private String foot; 8 9 public String getHead() { 10 return head; 11 } 12 13 public void setHead(String head) { 14 this.head = head; 15 } 16 17 public String getBody() { 18 return body; 19 } 20 21 public void setBody(String body) { 22 this.body = body; 23 } 24 25 public String getFoot() { 26 return foot; 27 } 28 29 public void setFoot(String foot) { 30 this.foot = foot; 31 } 32 }
1 public class Man extends Person { 2 3 }