設計模式-建造者模式

建造者模式:也叫生成器模式,將一個複雜對象的構建與他的表示分離,使得一樣的構建過程能夠建立不一樣的表示。ide

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

  1. product產品類,一般實現了模板方法模式,也就是有模板方法和基本方法。
    this

  2. builder抽象建造者,規範產品組建,通常由子類實現。code

  3. ConcreteBuilder具體建造者。實現抽象類定義的全部方法,而且返回一個組建好的對象。對象

  4. Derector導演類,負責安排已有模塊的順序,告訴builder建造。接口

通用代碼:get

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();
    }
}


建造者模式和工廠模式很是類似,區別:建造者模式的主要功能:調用順序的安排,通俗的將就是零件的裝配,順序不一樣產生的對象也不一樣,工廠模式注重建立,建立零件是他的主要職責。模板

相關文章
相關標籤/搜索