關於建造者模式的個人理解


 

作為創建型的模式,肯定是創建對象等時候用的.

聯系到實際,就是一個javaBean 如果想獲取一個完整的對象, 需要為屬性挨個賦值.

這樣如果連續創建多個對象的時候, 重復代碼 及代碼量明顯太多了

這時候就應該抽象出來一個 創建對象的接口,或者抽象類  每一類對象一個實現類.

在創建一個控制類. 里面調用接口的每一個方法, 同時返回創建好的對象. 

 

eg:   手機套餐  多種套餐:   套餐包含 通話時間 和流量

javaBean :  

public Class SJtc {

  String thsj;// 通話時間

  String ll; 流量

  get();

  set();

}

正常如果構建套餐. 直接 Sjtc sjtc = new Sjtc(); sjtc.setThsj()... 這樣寫 

 

接下來換一個實現方式:

public abstrac class SjcBuilder {

  Sjtc sjtc = new Sjtc();

  abstract void setThsj();

  abstract void setLl();

      getSJtc{

  return this.sjtc;  

}

}

// 具體套餐實現類:

public ASjtc extends SjcBuilder {

  void setThsj(){

  sjtc.setThsj("123123");

  }

  void setLl(){

  sjtc.setLl("123123");

  }  

}

再寫一個控制類調用 抽象類所有方法;

puclic class control{

SjcBuilder builder;

public control(buider){

this.builder = builder; 

}

Sjrc getTc(){

 builder.setThsj();

builder.setLl();

return builder;

}

 

}

這樣調用的時候 這樣就好了  

control control = new control(new ASjtc());

control.getTc();

調用者不用關心 a套餐都需要什么?

 

把抽象類 換成接口是一樣的.  創建對象可以放在builde里面.  

但是注意 使用完之后置空

     public void createDoppelganger(String name){
        doppelganger = new Doppelganger(name);
    }

    public Doppelganger getDoppelganger(){
        try {
            return doppelganger; 
        }finally{
            doppelganger = null;
        }
    }

 

 

總體而言 建造者模式 跟工廠模式相比, 多了一個控制類, 用來控制對象的創建. 同時建造者模式 是關注的創建的過程.為了減少中間創建對象代碼  

在實際工作中 完全是有利用價值的,但是因為例子中 各個實現類的參數都是已知的. 在實際中可能是變化的, 這樣可以在java bean加一個方法.來處理這些,只要規則一置就好了


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM