Effective java P5~P9
項目1 コンストラクタの代わりにstaticファクトリーメソッドの提供を検討する
クランスのインスタンスを取得する方法として、通常はコンストラクタを提供するが、publicなstaticファクトリーメソッドを提供することもできる。
staticファクトリーメソッドとは、そのクラスのインスタンスを返す単なるstaticメソッドである。
例)Booleanクラスで提供されているstaticファクトリメソッド
public static Boolean valueOf(boolean b) {
return (b ? Boolean.TRUE : Boolean.FALSE);
}
staticファクトリーメソッドの長所は以下の通り。
1:名前を持つことが出来る
コンストラクタと違い、自由に名前をつけることが可能なため、そのメソッドの返すインスタンスの特性をメソッド名として表現することができる。
→ ファクトリーメソッドを持つクラスの使用が用意になる。クライアントのコードの可読性が上がる。
また、オーバーロードの制約も気にする必要がない(名前をつけられるから)
2:メソッドが呼び出されるごとに新しいインスタンスを生成する必要が無い
ファクトリーメソッドで、予め生成された不変クラスのインスタンスを返すようにすることで、不必要な重複したオブジェクトの生成を回避することができる。
つまり、繰り返し呼び出しを行われても、返されるインスタンスは常に同一、ということを保証することができる。(オブジェクトの同一性の比較にequalsメソッドではなく==が使用可能)
3:戻り値型を定義することができる
つまり、戻り値型のサブタイプのオブジェクトを返すことが可能である。
-----> 疲れたので 続く
0 件のコメント:
コメントを投稿