Builder 設計模式

public class xxxConfig{
  //須要設置的字段
   private String mName;
   private String mPossword;    
  public static class Build{
     //須要設置的字段
       private String mName;
       private String mPossword;
    private xxxConfig(){}

    private Build setName(String name){
      mName = name;
      return this;
    }  
    public Build setPossword(String password){
      mPassword = password;
      return this;
    } 
    public void applyConfig(xxxConfig config){
      config.mName = this.mName;
      config.mPassword = this.mPassword;
    }

    public xxxConfig create(){
      xxxConfig config = new xxxConfig();
      applyConfig(config);
      return config;
    }
  }
}

  

class xxx{
    private xxxConfig mConfig;
   public void init(xxxConfig config){
     mConfig = config;
    //檢測config的合法性,作一些初始化操做
    checkConfig();
   }

   private void checkConfig(){
    if(mConfig.mName != null){
      //使用name的具體操做
    }
   }
}


調用:
  xxxConfig config = xxxConfig.Build.setName("tom").setPassword("123").create();
  new xxx().init(config);

  

 使用場景:

  一、須要生成的產品對象有複雜的內部結構。
  二、須要生成的產品對象的屬性相互依賴,建造者模式能夠強迫生成順序。
  三、在對象建立過程當中會使用到系統中的一些其它對象,這些對象在產品對象的建立過程當中不易獲得。app

 

優勢:

  1.良好的封裝性,能夠使客戶端沒必要知道產品內部組成的細節。ui

  2.獨立,容易擴展this

缺點:

  產生多餘的Builder對象以及Director對象,消耗內存。對象

相關文章
相關標籤/搜索