注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

东东的博客

江南烟雨,同大家一起分享

 
 
 

日志

 
 

设计模式读书笔记之建造者模式(Builder)  

2010-07-13 19:50:07|  分类: 设计模式相关 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

建造者模式: 将复杂对象的建造和表示分离, 使同样的建造过程可以创造出不同细节的产品.

建造者模式,听名字就应该知道和工厂模式一样,是用来创造对象的。但是建造者和工厂模式的区别就是工厂模式只关注最终的产品,它往往是简单的调用被 创建者的构造函数;而建造者更关心细节, 它定义了创建一个复杂对象所需的步骤, 而创建者具体的实现类可根据具体的需求,调整创建细节。

示例:


view plaincopy to clipboardprint?
//产品  
package designpattern.builder;  
public class Product {  
    private String part1;  
    private String part2;  
    private String part3;  
    public String getPart1() {  
        return part1;  
    }  
    public void setPart1(String part1) {  
        this.part1 = part1;  
    }  
    public String getPart2() {  
        return part2;  
    }  
    public void setPart2(String part2) {  
        this.part2 = part2;  
    }  
    public String getPart3() {  
        return part3;  
    }  
    public void setPart3(String part3) {  
        this.part3 = part3;  
    }  
      
}  
//抽象建造者  
package designpattern.builder;  
public abstract class Builder {  
    public abstract void buildPart1();  
    public abstract void buildPart2();  
    public abstract void buildPart3();  
    public abstract Product getResult();  
}  
//具体建造者  
package designpattern.builder;  
  
public class ConcreteBuilder extends Builder{  
    Product product = new Product();  
    public void buildPart1() {  
        System.out.println("build part 1 for product");  
        product.setPart1("part1");  
    }  
    public void buildPart2() {  
        System.out.println("build part 2 for product");  
        product.setPart2("part2");  
    }  
    public void buildPart3() {  
        System.out.println("build part 3 for product");  
        product.setPart3("part3");  
    }  
    public Product getResult() {  
        return product;  
    }  
  
}  
//指挥者  
package designpattern.builder;  
  
public class Director {  
    public void construct(Builder b){  
        b.buildPart1();  
        b.buildPart2();  
        b.buildPart3();  
        //return b.getResult();  
    }  
}  

特点:

1 建造者定义了建造产品所需的各个步骤;

2 指挥者通过调用建造者, 按既定的步骤建造对象.

抽象建造者通过把产品的生产过程分解为不同的步骤,  从而使具体建造者在具体的建造步骤上具有更对弹性. 从而创造出不同表示的产品。

举一例:

比如建造一个人: 抽象建造者把造人的过程分解为: 建造头部,驱赶, 四肢, 血液系统, 呼吸系统..... 那么不同的具体建造者可以根据客户需要, 建造出不同的人来: 有的人躯体胖, 有的人手臂长, 有的人A型血, 有的人B型血......  这是构造函数无法提供的弹性。


转自:http://blog.csdn.net/sunxing007/archive/2010/03/22/5406132.aspx

  评论这张
 
阅读(538)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017