?
??? 類中有多個構造函數,因此很難決定在開發期間調用那一個的時候,請采用Creation Method(個人翻譯為靜態構建模式)方式
??
優點:
???? 1:比構造函數能夠更好的表達創建的實例的總類
???? 2:避免了構造函數的局限,比如兩個構造函數的參數數目和類型不能相同
???? 3:更容易發現無用的創建代碼
????
缺點:
???? 創建方式是非標準的,有些類需要使用new實例化,有些需要使用靜態構建模式.
?????????????????????? ?? ??? ??? ??? ? -------------------------以上是書中原話
??? 個人強烈推薦使用靜態構建模式,尤其是優點的第2條,很優雅的解決了我下面例子中的問題
不可運行代碼:
public class People {
??? private int age;
??? private int height;
??? public People(int age){
??? ??? this.age=age;
??? }
??? public People(int height){
??? ??? this.height=height;
??? }
}
使用構建模式后:
public class People {
??? private int age;
??? private int height;??
??? public static? People createPeopleByAge(int age){
??? ??? this.age=age;
??? }
??? public static? People createPeopleByHeight(int height){
??? ??? this.height=height;
??? }
}對比一下兩個對象,第二個對象的代碼變得優雅而又實用了.而且邏輯清晰
其實還有幾個優點:
??????? 1:當使用new初始化一個類的時候,類中的每個構造函數都會被遍歷一遍,也就是構造函數越多,這個類實例化需要的時間越長.
??????? 2:我們現在很多人使用了編譯器,有個代碼提醒的功能.如果是靜態方法,可以得到提醒,而不同的構造函數,我們必須去查api了.
???????
????????????????????????????????????????????????????????????????