设计模式07_建造者

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u011331731/article/details/89179251

建造者模式(Builder Pattern)使用多个简单的对象一步一步构建成一个复杂的对象。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。
一个 Builder 类会一步一步构造最终的对象。该 Builder 类是独立于其他对象的。
注意事项:与工厂模式的区别是:建造者模式更加关注与零件装配的顺序。


最核心的是builder和dirctor
director

class Director
{
    private Builder builder;
    public Director(Builder builder)
    {
        this.builder=builder;
    }
    //产品构建与组装方法
    public Product construct()
    {
        builder.buildPartA();
        builder.buildPartB();
        builder.buildPartC();
        return builder.getResult();
    }
}

builder

abstract class Builder
{
    //创建产品对象
    protected Product product=new Product();
    public abstract void buildPartA();
    public abstract void buildPartB();
    public abstract void buildPartC();
    //返回产品对象
    public Product getResult()
    {
        return product;
    }
}

典型调用:

 public static void main(String[] args)
    {
        Builder builder=new ConcreteBuilder();
        Director director=new Director(builder);
        Product product=director.construct();
        product.show();
    }

可以看出,直接返回product的是Director,但实际是通过Director内部持有的builder返回
Director通过定义builder方法的不同执行流对过程进行多态(如果需要不同的流程则新定义Director重写
builder通过对相同执行流程的不同具体实现进行多态(也就是相同执行流不同具体实现则定义builder重写)
例如:
高端车:加工-上漆-装轮胎-洗车(水洗)
一般车: 加工-装轮胎-上漆-洗车(酒精洗)
流程的不同通过不同Director实现。执行的细节不同通过builder实现。
其本质上是一种动作拆分方法Or功能拆分方法,虽然实际用作建造者场景比较少,但后续其他设计模式基本都是类似套路。本质上就是动作拆分,拆分给不同的对象,然后需要重修修改时,只需要在合适的层次重写另一个对象就行了(避免了对旧对象的改动)。

猜你喜欢

转载自blog.csdn.net/u011331731/article/details/89179251