對於建造者模式,小編個人理解為就是一個組裝型的模式。
建造者模式 概述 將一個復雜對象的構建與它的表示分離,使得同樣的構建過程可以創建不同的表示。 適用性 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 }