構造方法中傳遞的引數一般是必要引數,如果乙個類,有必要的屬性,還有可選的屬性,那可用builder構造器 建立對應的類
例:類nutrition 有必要屬性servings,servings,可選屬性為calories,fat,sodium,carbohydrate
public class nutrition
public builder calories(int var)
public builder fat(int var)
public builder sodium(int var)
public builder carbohydrate(int var)
//don't forgot
public nutrition build()
}//construction
private nutrition(builder builder)
}
**分析:
(1)寫nutrition 類的屬性
為減少類成員的可訪問性,將所有nutrition 類屬性定義為private final型別
[color=red]
(2)建立builder類,寫builder類的屬性[/color]
定義builder為public static class,寫屬性時區分必要或可選,必要用private final型別,可選用private,並且定義簡單的初值,假定為0、null或其他
(3)處理必要屬性,建立builder類的構造方法
將必要的屬性放入builder的屬性中,例子中為servings和servingsize
(4)處理可選屬性,建立builder類的其他類
每個方法先修改calories、fat等引數,然後返回builder自身
[color=red]
(5)builder方法[/color]
先呼叫nutrition 的構造方法,將自己傳過去,返回乙個new nutrition。此方法我認為是很容易忘記的地方,最起碼我寫時忘了汗 :( ,builder完成。
(6)完善nutrition的構造方法
將 builder中的所有屬性copy到自身中,全是this.*** = builder.***
(7)方法呼叫
nutrition n = new nutrition.builder(100,200).fat(230).sodium(120).build();
第二條 遇到多個構造器引數時要考慮用構建器,此方法好像用的不多,使用範圍不了。。。
星 辰 第 二 條 約 定
1 關係圖 2 遊戲設計 輸入s建正式開始遊戲,一開始只有乙個敵人,當你按下w或s時,它會在隨機位置生成敵人,你的任務是吃掉敵人。當地圖上乙個敵人都沒有的時候,你就贏了。3 問題 一開始想實現敵人隨機移動,還有隨機生成的五個食物,碰到敵人則遊戲就輸了。但是敵人隨機移動的 查了很久也想了很久沒搞出來。...
sql查詢從第二條開始
從資料庫中查詢前9條,從第二條輸出 select top 9 from biao where id not in select top 1 id from biao 那麼以此類推 從資料庫中查詢前9條,從第三條輸出 select top 9 from biao where id not in sel...
mysql篩選第二條字段 MySql索引總結
索引的數學原理 索引的實現是b 樹,型別的資料結構,b 樹內節點不存data,只存key 葉子節點不儲存指標。利用磁碟預讀區域性性原理,一次i o操作多個頁 4k 到記憶體,資料庫系統的設計者巧妙利用了磁碟預讀原理,將乙個節點的大小設為等於乙個頁,這樣每個節點只需要一次i o就可以完全載入。b tr...