设计模式学习—建造者模式

  1. 动机:构建与表示分离
  2. 结构:
     
     3.角色:
    1. 抽象建造者
    2. 具体建造者
    3. 指挥者
    4. 产品
     4.用例:javaMail、KFC套餐、游戏中的服装等
     5.优缺点:
    1. 优点:
      1. 客户端不必知道产品内部组成的细节,将产品本身与产品的创建过程解耦
      2. 每一个具体建造者都相对独立,而与其他的具体建造者无关。户使用不同的具体建造者即可得到不同的产品对象
      3. 增加新的具体建造者无需修改原有类库的代码,系统扩展方便
    2. 缺点:
      1. 如果产品之间的差异性很大,不适合使用建造者模式
      2. 如果产品的内部变化复杂,可能会导致需要定义很多具体建造者类来实现这种变化,导致系统变得很庞大
     6.适用:
    1. 需要生成的产品对象有复杂的内部结构,这些产品对象通常包含多个成员属性
    2. 需要生成的产品对象的属性相互依赖,需要指定其生成顺序
    3. 对象的创建过程独立于创建该对象的类
    4. 隔离复杂对象的创建和使用,并使得相同的创建过程可以创建不同类型的产品
     7.代码


/**
 * 产品
 * @author  ilmlife(ilmlife @126.com)
 *  <pre> 2013  - 12 -  16下午11:22:58 </pre>
 */
public  class  Product {

}
/**
 * 抽象建造者
 * @author  ilmlife(ilmlife @126.com)
 *  <pre> 2013  - 12 -  16下午11:30:50 </pre>
 */
public  abstract  class  Builder {
        /**
       * 构造第一部分
       */
        public  abstract  void  buildPart1();
        /**
       * 构造第二部分
       */
        public  abstract  void  buildPart2();
        /**
       * 获取构造结果
       *  @return
       */
        public  abstract  Product getResult();
}

/**
 * 具体建造者
 * @author  ilmlife(ilmlife @126.com)
 *  <pre> 2013  - 12 -  16下午11:33:24 </pre>
 */
public  class  ConcreteBuilder  extends  Builder {
        private  Product  product  =  new  Product();
        @Override
        public  void  buildPart1() {
              //  TODO  Auto-generated method stub
      }

        @Override
        public  void  buildPart2() {
              //  TODO  Auto-generated method stub
      }

        @Override
        public  Product getResult() {
              return  product  ;
      }

}

/**
 * 指挥者
 * @author  ilmlife(ilmlife @126.com)
 *  <pre> 2013  - 12 -  16下午11:34:35 </pre>
 */
public  class  Director {
        private  Builder  builder  ;
        public  void  construct(){
              builder  =  new  ConcreteBuilder();
              builder .buildPart1();
              builder .buildPart2();
              builder .getResult();
      }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值