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でメソッドを定義するので、サブクラスによる代替とかはできない。
この方法に何のメリットがあるのか?
それについては、この後少しずつ書き足していきます。