设计模式-建造者模式

建造者模式:也叫生成器模式,将一个复杂对象的构建与他的表示分离,使得同样的构建过程可以创建不同的表示。

建造者模式中存在4个角色:

  1. product产品类,通常实现了模板方法模式,也就是有模板方法和基本方法。

  2. builder抽象建造者,规范产品组建,一般由子类实现。

  3. ConcreteBuilder具体建造者。实现抽象类定义的所有方法,并且返回一个组建好的对象。

  4. Derector导演类,负责安排已有模块的顺序,告诉builder建造。

通用代码:

public abstract class AbstractProductClass {

    private List<String> sequence = new ArrayList<String>();

    protected abstract void doSomething();

    protected abstract void doSomething1();

    public void templatething(){
        for (int i = 0; i < sequence.size(); i++) {
            if(sequence.get(i).equals("a")){
                doSomething();
            }else if(sequence.get(i).equals("b")){
                doSomething1();
            }
        }
    }

    public void setSequence(List<String> sequence) {
        this.sequence = sequence;
    }
}


public class ConcretClass1 extends AbstractProductClass{
    @Override
    protected void doSomething() {

    }

    @Override
    protected void doSomething1() {

    }
}


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


public class ConcretBuilder extends Builder {

    private AbstractProductClass productClass = new ConcretClass1();
    @Override
    public void setPart() {

    }

    @Override
    public AbstractProductClass buildProduct() {
        return productClass;
    }
}

注意:如果有多个产品类就有几个建造者,而且着多个产品 类具有相同接口和抽象类。

public class Derector {
    private Builder builder = new ConcretBuilder();

    public AbstractProductClass getProduct(){
//      设置setpart 相当于 setSequence作用。
        builder.setPart();
//
        return builder.buildProduct();
    }
}


建造者模式和工厂模式非常相似,区别:建造者模式的主要功能:调用顺序的安排,通俗的将就是零件的装配,顺序不同产生的对象也不同,工厂模式注重创建,创建零件是他的主要职责。


你可能感兴趣的:(设计模式-建造者模式)