建造模式可以将一个产品的内部表象与产品的生产过程分割开来,从而可以使一个建造过程生成具有不同的内部表象的产品对象。
一、简略图

建造模式(Builder Pattern)

二、示例
1)类图与角色
建造模式(Builder Pattern)
建造模式(Builder Pattern)

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();
 }
}
 
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();
}
 
 
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;
 }
}
 
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;
 }
}
 
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());
 }
}

相关文章: