Factory

Refactoring to Patterns / Joshua Kerievsky

Creation Methods and Factory Methods(59)

オブジェクトを生成するメソッドは、一般にFactory Methodと呼ばれることが多い。しかし、GoFの定義では、オブジェクトを生成するメソッドの全てがFactory Methodというわけではない。GoFのFactory Methodの特徴は、ポリモルフィズムを使いインスタンスを生成することである。したがって、オブジェクトを生成するメソッドのことをCreation Methodと呼ぶことにする。Martin Fowlerのfactory method(リファクタリング)や、Joshua Blochのstatic factory method(Effective Java)におけるfactory methodは、Creation Methodのことである。

What is a Factory?(70)

Factoryという言葉は無造作に使われすぎている。あるときは、Factory Methodの意味で、あるときはAbstract Factoryの意味で使われている。また、両方の意味で使われている時や、オブジェクトを生成するコードを指して、Factoryと言う場合もある。意味の不明確な名前は、Factoryの解決する問題への理解をさまたげるので、自分流に定義してみる。

Factory

一つ以上のCreation Methodを持つクラス。

Factory Method

非staticなメソッドで、ベースクラスかインターフェースを返す。これらのメソッドは、ポリモルフィックなオブジェクトの生成が可能なクラス階層上の複数のクラスに実装されている。Factory MethodはFactoryではない。

Abstract Factory

具象クラスを指定することなく、関連するオブジェクトを生成するためのインターフェース。全てのAbstract FactoryはFactoryだが、全てのFactoryがAbstract Factoryというわけではない。