建造模式可以将一个产品的内部表象与产品的生产过程分割开来,从而可以使一个建造过程生成具有不同的内部表象的产品对象。
一、简略图
2)java代码
Director类:
package builder.director;
import builder.builder.Builder;
import builder.builder.ContreteBuilder;
import builder.product.Product;
public class Director {
private Builder builder;
public Product construct(){
builder = new ContreteBuilder();
builder.buildBody();
builder.buildTitle();
return builder.retrieveResult();
}
}
import builder.builder.ContreteBuilder;
import builder.product.Product;
public class Director {
private Builder builder;
public Product construct(){
builder = new ContreteBuilder();
builder.buildBody();
builder.buildTitle();
return builder.retrieveResult();
}
}
Builder类及ContreteBuilder类:
package builder.builder;
import builder.product.Product;
abstract public class Builder {
public abstract void buildTitle();
public abstract void buildBody();
public abstract Product retrieveResult();
abstract public class Builder {
public abstract void buildTitle();
public abstract void buildBody();
public abstract Product retrieveResult();
}
package builder.builder;
import builder.product.Product;
public class ContreteBuilder extends Builder{
private Product p = new Product();
public void buildBody() {
p.setBody("body");
}
public void buildTitle() {
p.setTitle("title");
}
public Product retrieveResult() {
return p;
}
}
public class ContreteBuilder extends Builder{
private Product p = new Product();
public void buildBody() {
p.setBody("body");
}
public void buildTitle() {
p.setTitle("title");
}
public Product retrieveResult() {
return p;
}
}
Product类:
package builder.product;
public class Product {
private String title;
private String body;
public Product(){
System.out.println("I am created......");
}
public String getBody() {
return body;
}
public void setBody(String body) {
this.body = body;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
}
private String title;
private String body;
public Product(){
System.out.println("I am created......");
}
public String getBody() {
return body;
}
public void setBody(String body) {
this.body = body;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
}
Client类:
package builder;
import builder.director.Director;
import builder.product.Product;
public class Client {
private static Product p;
public static void main(String args[]){
Director director = new Director();
p = director.construct();
System.out.println(p.getBody());
System.out.println(p.getTitle());
}
}
import builder.product.Product;
public class Client {
private static Product p;
public static void main(String args[]){
Director director = new Director();
p = director.construct();
System.out.println(p.getBody());
System.out.println(p.getTitle());
}
}