よくわからないことを調べて解説してみるブログ。
2017
・テレスコーピングコンストラクタ
コンストラクタに初期化パラメータをすべて引数にとる実装方式。
必須のパラメータが可変である場合、可変パターンごとにコンストラクタに用意する必要がある。
クラスが持つ初期化対象の変数がN個だとしたら、N!の数だけコンストラクタを必要とする可能性がある。
・JavaBeansパターン
new オブジェクト後に、パラメータごとに用意したsetメソッドで初期化する。
メリット
パラメータが大量でも必要分だけの記述で対応可能。
デメリット
コードが分断される。
setメソッドは実装上publicになるため、初期化時のみの利用というような制限ができない。
・ビルダーパターン
クラスの内部にstaticなビルダークラスを用意する。
Builderクラスは、必須パラメータを引き受けるコンストラクタを持ち、
任意パラメータに対する初期化メソッドを持つ。
この初期化メソッドは返却型にBuilderクラスを指定する。
初期化例
Car car = Car.Builder(100, 120).setMaxSpeed(110, "Km/h").setHoyeel(4).build();
//雑ですみません。
メリット
テレスコーピングコンストラクタパターンと
JavaBeansパターンのデメリットを解消する
デメリット
パラメータ数が少ないときにはあまり効果的ではない(しかし、パラメータの拡張性に富んでいるため間違いになることはないだろう)。
コンストラクタに初期化パラメータをすべて引数にとる実装方式。
必須のパラメータが可変である場合、可変パターンごとにコンストラクタに用意する必要がある。
クラスが持つ初期化対象の変数がN個だとしたら、N!の数だけコンストラクタを必要とする可能性がある。
・JavaBeansパターン
new オブジェクト後に、パラメータごとに用意したsetメソッドで初期化する。
メリット
パラメータが大量でも必要分だけの記述で対応可能。
デメリット
コードが分断される。
setメソッドは実装上publicになるため、初期化時のみの利用というような制限ができない。
・ビルダーパターン
クラスの内部にstaticなビルダークラスを用意する。
Builderクラスは、必須パラメータを引き受けるコンストラクタを持ち、
任意パラメータに対する初期化メソッドを持つ。
この初期化メソッドは返却型にBuilderクラスを指定する。
初期化例
Car car = Car.Builder(100, 120).setMaxSpeed(110, "Km/h").setHoyeel(4).build();
//雑ですみません。
メリット
テレスコーピングコンストラクタパターンと
JavaBeansパターンのデメリットを解消する
デメリット
パラメータ数が少ないときにはあまり効果的ではない(しかし、パラメータの拡張性に富んでいるため間違いになることはないだろう)。
PR
Post your Comment
| HOME | Effective Java 読書日記 項目1コンストラクタの代わりにstaticファクトリーメソッドを検討する忍者ブログ [PR] * Template by TMP
>>
プロフィール
HN:
たんてーくん
性別:
非公開
最新記事
(03/29)
(03/29)
(06/26)
(05/21)
(04/23)
カテゴリー
最新CM
[09/25 http://2017.bblbuy.com]
[09/24 http://www.japanform.com]
[09/23 http://www.japanform.com]
[09/22 http://www.japanform.com]
[09/21 http://2017.bblbuy.com]
ブログ内検索