設計模式之-建造者模式-Builder
將一個複雜物件的構建與它的表示分離,使得同樣的構建過程可以建立不同的表示。
適用性
1.當建立複雜物件的演算法應該獨立於該物件的組成部分以及它們的裝配方式時。 2.當構造過程必須允許被構造的物件有不同的表示時。
參與者
1.Builder 為建立一個Product物件的各個部件指定抽象介面。 2.ConcreteBuilder 實現Builder的介面以構造和裝配該產品的各個部件。 定義並明確它所建立的表示。 提供一個檢索產品的介面。 3.Director 構造一個使用Builder介面的物件。 4.Product 表示被構造的複雜物件。ConcreteBuilder建立該產品的內部表示並定義它的裝配過程。 包含定義組成部件的類,包括將這些部件裝配成最終產品的介面。
package pack.java.model;
public class Person {
private String header;
private String body;
private String foot;
public Person() {
super();
// TODO Auto-generated constructor stub
}
public Person(String header, String body, String foot) {
super();
this.header = header;
this.body = body;
this.foot = foot;
}
public String getHeader() {
return header;
}
public void setHeader(String header) {
this.header = header;
}
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;
}
}
package pack.java.model;
public class Man extends Person {
}
package pack.java.buliderinterface;
import pack.java.model.Person;
public interface PersonBulider {
/**
* 建立頭部;
*/
public void buliderHeader();
/**
* 建立身體;
*/
public void buliderBody();
/**
* 建立腳;
*/
public void buliderFoot();
/**
* 建立一個完整的人;
* @return
*/
public Person buliderPerson();
}
package pack.java.buliderinterfaceimpl;
import pack.java.buliderinterface.PersonBulider;
import pack.java.model.Person;
public class ManBuilder implements PersonBulider{
private Person person = null;
public ManBuilder(){
person = new Person();
}
public void buliderBody() {
// TODO Auto-generated method stub
person.setBody("建立男人的身體!");
}
public void buliderFoot() {
// TODO Auto-generated method stub
person.setFoot("建立男人的腳!");
}
public void buliderHeader() {
// TODO Auto-generated method stub
person.setHeader("建立男人的頭部!");
}
public Person buliderPerson() {
// TODO Auto-generated method stub
return person;
}
}
package pack.java.buliderinterfaceimpl;
import pack.java.buliderinterface.PersonBulider;
import pack.java.model.Person;
public class PersonDirector {
/**
* 構造人的方法;
* 傳入介面;
* @param personBulider
* @return 一個人的實體;
*/
public Person constructPerson(PersonBulider personBulider){
personBulider.buliderHeader();
personBulider.buliderBody();
personBulider.buliderFoot();
Person person = personBulider.buliderPerson();
return person;
}
}
package pack.java.bulider.test;
import pack.java.buliderinterfaceimpl.ManBuilder;
import pack.java.buliderinterfaceimpl.PersonDirector;
import pack.java.model.Person;
public class TestBuilderPersion {
public static void main(String[] args) {
PersonDirector personDirector = new PersonDirector();
Person person = personDirector.constructPerson(new ManBuilder());
System.out.println(person.getHeader());
System.out.println(person.getBody());
System.out.println(person.getFoot());
}
}
執行結果:
建立男人的頭部!
建立男人的身體!
建立男人的腳!
建立男人的身體!
建立男人的腳!
相關文章
- 設計模式-建造者模式(Builder)設計模式UI
- 設計模式--建造者模式(Builder Pattern)設計模式UI
- 設計模式實戰系列之@Builder和建造者模式設計模式UI
- 重識設計模式-建造者模式(Builder Pattern)設計模式UI
- C#設計模式-建造者模式(Builder Pattern)C#設計模式UI
- 人人都會設計模式: 07、建造者模式--Builder設計模式UI
- 建造者模式(Builder)模式UI
- 設計模式之【建造者模式】設計模式
- 設計模式之建造者模式設計模式
- 建造者模式(Builder Pattern)模式UI
- golang設計模式之建造者模式Golang設計模式
- 設計模式之建造者模式(BuilderPattern)設計模式UI
- Java設計模式之(三)——建造者模式Java設計模式
- 一天一個設計模式(三) - 建造者模式(Builder)設計模式UI
- 設計模式----建造者模式設計模式
- 設計模式(建造者模式)設計模式
- 設計模式 | 建造者模式設計模式
- 設計模式 --建造者模式設計模式
- 設計模式-建造者模式設計模式
- 設計模式 —— 建造者模式設計模式
- 設計模式系列之建造者模式(Builder Pattern)——複雜物件的組裝與建立設計模式UI物件
- 折騰Java設計模式之建造者模式Java設計模式
- 嘻哈說:設計模式之建造者模式設計模式
- 設計模式 --建類神器之建造者模式設計模式
- Java設計模式之模板方法模式和建造者模式Java設計模式
- java設計模式-建造者模式Java設計模式
- Java設計模式之builder模式Java設計模式UI
- Java 設計模式(二)《建造者模式》Java設計模式
- 設計模式實戰 - 建造者模式設計模式
- GoLang設計模式01 - 建造者模式Golang設計模式
- 極簡設計模式-建造者模式設計模式
- 設計模式 #3 (原型模式、建造者模式)設計模式原型
- 設計模式【4】-- 建造者模式詳解設計模式
- 《設計模式》 - 3. 建立者模式( Builder )設計模式UI
- 設計模式(五)Builder構建者模式設計模式UI
- 設計模式(Swift) - 3.觀察者模式、建造者模式設計模式Swift
- 設計模式快速學習(四)建造者模式設計模式
- JavaScript設計模式系列二之建造者模式(附案例原始碼)JavaScript設計模式原始碼
- 設計模式:Builder模式概述設計模式UI