staticなFactoryメソッド

static-factory.png

Effective Javaにて、まず最初の項で激しくおすすめされている手法である。

staticなFactoryの利点・欠点

利点 欠点

何度呼び出しても同じオブジェクトを返すことができる。

このことはオブジェクト指向における再利用のためのデザインパターンfliweightパターンに似ているらしい。
ここでいう同じというのは同じメモリ領域のものという意味であり、呼び出す度にそのメモリ領域に格納されている内容が変わっても良い。

  • オブジェクトが同値であることを確かめるとき、equals()じゃなくて==を使えばよい

ので楽&パフォーマンスアップ
そう、作成メソッドを使うために、わざわざオブジェクトをインスタンス化する必要はないのだ。[2]

  • static factoryはサブクラス化することが出来ない。

だから、作成メソッドの振る舞いを変更できない[2]

static Factoryメソッドはこんなとこに隠れている!

こんな名前を見つけたら、これはstatic Factoryメソッドなんだ、と思って良い。

valueOf 文字列をintに変換したいときとかに使うね 要は型変換のメソッドである
of EnumSetで広まった、valueOfに対する簡潔な代替
newInstance 返される個々のインスタンスがすべて別々のインスタンスである
getType 意味不明
newType 意味不明

いずれにせよ、オブジェクトが戻り値ですよーーという感じの名前だね。


effective-java static

サポートサイト Wikidot.com effective-javastatic