建造(Builder)模式

5 篇文章 0 订阅
3 篇文章 0 订阅

一、建造(Builder)模式:         在一个产品的建造系统中,建造模式就好像把产品的结构和产品的零件构造过程对客户隐藏起来,把对建造过程进行指挥的责任和具体建造零件的责任分割开来.
二、建造(Builder)模式的角色与结构:

  1. 抽象建造者(Builder)角色:给出一个抽象接口.以规范产品对象的各个组成成分的建造,
  2. 具体建造(Concrete Builder)角色:它的主要任务是:一是实现抽象建造者所声明的接口,完成建造产品实例的操作,二是完成建造过程以后,提供产品的实例.
  3. 导演者(Director)角色:担任这个角色的类调用具体建造角色以创建产品对象.
  4. 产品(Product)角色:产品便是建造中的复杂对象,
        
二、一个简单的实例:
public interface BuilderInterface {  
public void buildPartA();  
public void buildPartB();  
public void buildPartC();  
public Product getResult();  
}  

/******************************************************************/  
public class BuilderRealize implements BuilderInterface {  
  private Product result = ProductFactory.getInstance();    
  public void buildPartA() {  
    result.addPart("Part A");  
  }    
  public void buildPartB() {  
    result.addPart("Part B");  
  }    
  public void buildPartC() {  
    result.addPart("Part C");  
  }  
  public Product getResult() {  
    return result;  
  }  
}  

/***************************************************************************/  
public class Direct {  
  private BuilderInterface builder = null;  
  public Direct(BuilderInterface builder) {  
    this.builder = builder;  
  }  
  public void construct(int j) {  
    if (j == 1) {  
        builder.buildPartA();  
    }  
    else if (j == 2) {  
        builder.buildPartA();  
        builder.buildPartB();  
    }  
    else {  
        builder.buildPartA();  
        builder.buildPartB();  
        builder.buildPartC();  
    }  

  }  
}  

/***********************************************************************************/  
import java.util.*;  

public class Main {  
  
  public static void main(java.lang.String[] args) {  
    //在此处插入用来启动应用程序的代码。  
    BuilderRealize builder = new BuilderRealize();  
    Direct direct = new Direct(builder);  
    direct.construct(2);  

    Product product = builder.getResult();  
    Collection col = product.getResult();  
    Iterator ite = col.iterator();  
    while (ite.hasNext()) {  
        System.out.println(ite.next());  
    }  

  }  
}  

/***********************************************************************/  
import java.util.*;  

public interface Product {  
  public void addPart(String part);  
  public Collection getResult();  
}  

/***********************************************************************/  
public class ProductFactory extends ProductRealize {  
  
  public static Product getInstance() {  
    return new ProductRealize();  
  }  
}  

/***********************************************************************/  
import java.util.*;  

public class ProductRealize implements Product {  
  private ArrayList carResult = new ArrayList();  
  public void addPart(String part) {  
    carResult.add(part);  
  }  
  public Collection getResult() {  
    return carResult;  
  }  
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值