10.java设计模式(读书笔记)建造者模式

来源:互联网 发布:淘宝卖女装店铺名字 编辑:程序博客网 时间:2024/05/07 22:13

参考:http://blog.csdn.net/jason0539/article/details/44992733

建造者模式:将一个复杂的对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。

简单的建造者:(只创造男人)

建造者模式主要讲的就是创建一个对象的时候可以弄一个builder类去分段的把实例化过程中,创建脑袋,腿,手等步骤分离出来。然后返回这个实例

bean:

  1. public class Man {  
  2.      private String head;  
  3.      private String body;  
  4.      private String foot;  
  5.   
  6.      public String getHead() {  
  7.           return head;  
  8.      }  
  9.      public void setHead(String head) {  
  10.           this.head = head;  
  11.      }  
  12.      public String getBody() {  
  13.           return body;  
  14.      }  
  15.      public void setBody(String body) {  
  16.           this.body = body;  
  17.      }  
  18.      public String getFoot() {  
  19.           return foot;  
  20.      }  
  21.      public void setFoot(String foot) {  
  22.           this.foot = foot;  
  23.      }  
  24. }  
Builder:

  1. public class ManBuilder{  
  2.      Man man;  
  3.      public ManBuilder() {  
  4.           man = new Man();  
  5.      }  
  6.      public void buildbody() {  
  7.           man.setBody("建造男人的身体");  
  8.      }  
  9.      public void buildFoot() {  
  10.           man.setFoot("建造男人的脚");  
  11.      }  
  12.      public void buildHead() {  
  13.           man.setHead("建造男人的头");  
  14.      }  
  15.      public Man builderMan() {  
  16.           buildHead();  
  17.           buildBody();  
  18.           buildFoot();  
  19.           return man;  
  20.      }  
  21. }  
测试:

  1. public class Test{  
  2.      public static void main(String[] args) {  
  3.           ManBuilder builder = new ManBuilder();  
  4.           Man man = builder.builderMan();  
  5.      }  
  6. }  

更标准的建造者模式:

角色Builder:

  1. public interface PersonBuilder {  
  2.      void buildHead();  
  3.      void buildBody();  
  4.      void buildFoot();  
  5.      Person buildPerson();  
  6. }  
角色ConcreteBuilder:

  1. public class ManBuilder implements PersonBuilder {  
  2.      Person person;  
  3.      public ManBuilder() {  
  4.           person = new Man();  
  5.      }  
  6.      public void buildbody() {  
  7.           person.setBody("建造男人的身体");  
  8.      }  
  9.      public void buildFoot() {  
  10.           person.setFoot("建造男人的脚");  
  11.      }  
  12.      public void buildHead() {  
  13.           person.setHead("建造男人的头");  
  14.      }  
  15.      public Person buildPerson() {  
  16.           return person;  
  17.      }  
角色ConcreteBuilder:

  1. public class WomanBuilder implements PersonBuilder {  
  2.      Person person;  
  3.      public WomanBuilder() {  
  4.           person = new Woman();  
  5.      }  
  6.      public void buildbody() {  
  7.           person.setBody(“建造女人的身体");  
  8.      }  
  9.      public void buildFoot() {  
  10.           person.setFoot(“建造女人的脚");  
  11.      }  
  12.      public void buildHead() {  
  13.           person.setHead(“建造女人的头");  
  14.      }  
  15.      public Person buildPerson() {  
  16.           return person;  
  17.      }  
  18. }  
角色Director:

  1. public class PersonDirector {  
  2.      public Person constructPerson(PersonBuilder pb) {  
  3.           pb.buildHead();  
  4.           pb.buildBody();  
  5.           pb.buildFoot();  
  6.           return pb.buildPerson();  
  7.      }  
  8. }  

角色Product:

  1. public class Person {  
  2.      private String head;  
  3.      private String body;  
  4.      private String foot;  
  5.   
  6.      public String getHead() {  
  7.           return head;  
  8.      }  
  9.      public void setHead(String head) {  
  10.           this.head = head;  
  11.      }  
  12.      public String getBody() {  
  13.           return body;  
  14.      }  
  15.      public void setBody(String body) {  
  16.           this.body = body;  
  17.      }  
  18.      public String getFoot() {  
  19.           return foot;  
  20.      }  
  21.      public void setFoot(String foot) {  
  22.           this.foot = foot;  
  23.      }  
  24. }  
  25. public class Man extends Person {  
  26.      public Man(){  
  27.           System.out.println(“开始建造男人");  
  28.      }  
  29. }  
  30. public class Woman extends Person {  
  31.      public Woman(){  
  32.           System.out.println(“开始建造女人");  
  33.      }  
  34. }  
测试:

  1. public class Test{  
  2.      public static void main(String[] args) {  
  3.           PersonDirector pd = new PersonDirector();  
  4.           Person womanPerson = pd.constructPerson(new ManBuilder());  
  5.           Person manPerson = pd.constructPerson(new WomanBuilder());  
  6.      }  
  7. }  





0 0
原创粉丝点击