根據有效的Java 2ED 項目2重構使用Builder模式或伸縮式構造格局
伸縮構造模式,在 您提供 只有所需參數的構造函數,另一個 與一個可選參數 ,第三個帶有兩個可選參數 等等,最終在 構造函數中帶有所有可選的 參數。
應用該模式的類的構造器的一個例子是從When would you use the Builder Pattern?
代碼組1A借用
Pizza(int size) { ... }
Pizza(int size, boolean cheese) { ... }
Pizza(int size, boolean cheese, boolean pepperoni) { ... }
Pizza(int size, boolean cheese, boolean pepperoni, boolean bacon) { ... }
大小是需要參數。 奶酪,意大利辣香腸和培根可選參數。 假設我想提供如下的構造函數。
代碼設置1B
Pizza(int size) { ... }
Pizza(int size, boolean cheese) { ... }
Pizza(int size, boolean pepperoni) { ... }
Pizza(int size, boolean cheese, boolean pepperoni, boolean bacon, int price, int) { ... }
另一個例子是,
代碼中設置2
public AttributeKey(String key, Class<T> clazz)
public AttributeKey(String key, Class<T> clazz)
public AttributeKey(String key, Class<T> clazz, @Nullable T defaultValue, boolean isNullValueAllowed)
public AttributeKey(String key, Class<T> clazz, @Nullable T defaultValue, boolean isNullValueAllowed, @Nullable ResourceBundleUtil labels)
的兩款最新例子我給沒有跟隨characterist作爲代碼集1a的可伸縮構造器
- 代碼集1b和2是否包含在伸縮構造函數中?如果不是,它叫什麼?
- 相較於使用生成器模式,其中之一(生成器之間和代碼組1a的圖案,2)提供了更多的好處
1b和2都給出編譯時錯誤,因爲它們有兩個具有相同簽名的構造函數。 – Superole 2014-01-28 08:01:07
其他答案http://stackoverflow.com/a/1953567/632951將提供更多信息... – Pacerier 2014-08-17 12:06:55