23种设计模式之——建造者模式

来源:互联网 发布:php extension dir 编辑:程序博客网 时间:2024/05/17 05:16

1.定义

Separate the construction of a complex object from its representation so that the sameconstruction process can create different representations.

将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。)

2.实用代码

产品类:

public class Product {    public void doSomething(){    //独立业务处理    }}

抽象建造者:

public abstract class Builder {    //设置产品的不同部分,以获得不同的产品    public abstract void setPart();    //建造产品    public abstract Product buildProduct();}

具体建造者:

public class ConcreteProduct extends Builder {    private Product product = new Product();    //设置产品零件    public void setPart(){        /*        * 产品类内的逻辑处理        */    }    //组建一个产品    public Product buildProduct() {    return product;    }}

导演类:

public class Director {    private Builder builder = new ConcreteProduct();    //构建不同的产品    public Product getAProduct(){        builder.setPart();        /*        * 设置不同的零件,产生不同的产品        */        return builder.buildProduct();    }}

3.建造者模式优点

● 封装性
使用建造者模式可以使客户端不必知道产品内部组成的细节
● 建造者独立,容易扩展
● 便于控制细节风险

4.使用场景

● 相同的方法,不同的执行顺序,产生不同的事件结果时,可以采用建造者模式。
● 多个部件或零件,都可以装配到一个对象中,但是产生的运行结果又不相同时,则可以使用该模式。
● 产品类非常复杂,或者产品类中的调用顺序不同产生了不同的效能,这个时候使用建造者模式非常合适。
● 在对象创建过程中会使用到系统中的一些其他对象,这些对象在产品对象的创建过程中不易得到时,也可以采用建造者模式封装该对象的创建过程。该种场景只能是一个补偿方法,因为一个对象不容易获得,而在设计阶段竟然没有发觉,而要通过创建者模式柔化创建过程,本身已经违反设计的最初目标。

注意:建造者模式关注的是零件类型和装配工艺(顺序),这是它与工厂方法模式最大不同的
            地方,虽然同为创建类模式,但是注重点不同。

原创粉丝点击