構造器引數有多個時要使用構建器builder
引數有多個,weight,height,log,nice多個引數,
其中weight和height引數是必須的,而log和nice引數是隨機選擇的,可以有其中乙個,也可以兩個都需要。
這是我們為了避免使用beans方法時由於執行緒不同步的因素,我們使用構建器。(builder)
在原來類的基礎上建立內部類builder,builder中的屬性和原來類cat中的屬性個數相同,然後:
1.把必須要的兩個屬性weight和height作為builder的建構函式進行返回
2.其他的可以有的引數分別建立其構造的呼叫方法,
把這兩種方式產生的屬性都返回給builder物件的屬性
在建立乙個cat builder的方法,這個方法吧builder物件返回給new cat(即使吧duilder物件的屬性給了cat物件)
這樣就實現了對cat類屬性的隨機選擇新增(可以選擇要新增的屬性)
注意cat物件 其在主方法中的呼叫方式
package builder;
public
class
catpublic builder nice
(int nice)
public builder log
(int log)
public cat builder()
}private
cat(builder builder)
}
測試類
注意cat物件 其在主方法中的呼叫方式
package builder;
public
class
test
}
遇到多個構造器引數時要考慮用構建器
重疊構造器模式可行,但是當有許多引數的時候,客戶端 會很難編寫 builder模式 不直接生成想要的物件,而是讓客戶端利用所有必要的引數呼叫構造器,得到乙個builder物件。public class nutritionfacts public builder calories int val pu...
第二條 遇到多個構造器引數時要考慮用構建器
構造方法中傳遞的引數一般是必要引數,如果乙個類,有必要的屬性,還有可選的屬性,那可用builder構造器 建立對應的類 例 類nutrition 有必要屬性servings,servings,可選屬性為calories,fat,sodium,carbohydrate public class nut...
多個構造器引數的處理方式 構建器
第一種處理方式 這個類有很多個引數 其中的servingsize和servings是必須的,其他的是可選的 我們可以採用重疊構造器 telescoping constructor 在這個模式之下,我們最少只需要提供引數個數最少的那個構造器即可,其他的引數預設為0 public class nurtr...