第二條 遇到多個構造器引數時要考慮用構建器

2021-08-25 18:19:54 字數 1286 閱讀 3342

構造方法中傳遞的引數一般是必要引數,如果乙個類,有必要的屬性,還有可選的屬性,那可用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...