The HIRO Says

If you smell what The HIRO is cooking!!!

staticなファクトリメソッド? vol.1 − イントロダクション

Effective Javaの第2章「creating and destroying objects」から。

「コンストラクタの代わりに、staticなファクトリメソッドを使ってみよう!」(意訳)という節があります。



普通、Javaでオブジェクトを生成する時は、こんな感じでコンストラクタを呼び出します。
 Integer i = new Integer(123);



これを、こんな感じで敢えてstaticなファクトリメソッドで代用しようということです。
 public static Integer valueOf(int i) {
  return new Integer(i);
 }



これ、GoFのFactoryパターンとは違うアプローチですよね。
GoFのFactoryパターンは、Factoryのサブクラスを定義して、サブクラス名によって生成するインスタンスを切り替える方法。
でもこの方法は、staticでメソッドを定義するので、サブクラスによる代替とかはできない。

この方法に何のメリットがあるのか?
それについては、この後少しずつ書き足していきます。