首页 > 其他 > 详细

设计模式(五) : 创建型模式--建造者模式

时间:2014-05-31 17:40:24      阅读:420      评论:0      收藏:0      [点我收藏+]

建造者模式的意图是将产品的内部表象和产品的生产过程分割开来。

类图:

bubuko.com,布布扣

示意性代码:

bubuko.com,布布扣
package com.javadesignpattern.builder;

public interface Builder {
    
    public void buildPart1();
    public void buildPart2();
    
    public Product retrieveProduct();

}
bubuko.com,布布扣
1
2
3
4
5
6
7
package com.javadesignpattern.builder;
 
public class Product {
     
     
 
}

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
package com.javadesignpattern.builder;
 
public class ConcreteBuilder implements Builder {
     
    private Product product = new Product();
 
    public void buildPart1() {
        // TODO Auto-generated method stub
        System.out.println("---buildPart1---");
    }
 
    public void buildPart2() {
        // TODO Auto-generated method stub
        System.out.println("---buildPart2---");
    }
 
    public Product retrieveProduct() {
        // TODO Auto-generated method stub
        return product;
    }
 
}

  

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
package com.javadesignpattern.builder;
 
public class Director {
     
    private Builder builder;
     
    public void construct(){
        builder = new ConcreteBuilder();
        builder.buildPart1();
        builder.buildPart2();
        builder.retrieveProduct();
    }
     
     
    //for test
    public static void main(String[] args){
        Director director = new Director();
        director.construct();
         
    }
 
}

在《java与模式》里面还有一种对产品的建造者模式,就是多个建造者,多个product,介个就多说了。

-------建造者和抽象工厂的区别----

个人觉得这两种模式的使用的场景不一样。抽象工厂是用来生产零件的,建造者是用来组装零件的。打个比方,拿汽车的例子来讲,我们可以用抽象工厂去生产车子的零件比如车轮发动机等。汽车也有牌子,比如大众,宝马,奥迪等。这样,单个零件的生产我们可以用抽象工厂。但是如何讲这些零件组装成一辆车,这就是建造者模式关心的问题了。

-------使用场景-----------

A: 需要生成的产品有复杂的内部结构。每一个内部成分本身可以是对象也可以一个对象的组成部分。

B: 需要生成的产品对象的属性相互依赖。建造者模式可以强制实行一种分步骤执行的建造过程。如果一个对象的一个属性必须在另一个属性被赋值之后进行,那么使用建造者便是一个很好的设计思想。

 

 

设计模式(五) : 创建型模式--建造者模式,布布扣,bubuko.com

设计模式(五) : 创建型模式--建造者模式

原文:http://www.cnblogs.com/ChristyorRuth/p/3760968.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!