Java言語で学ぶデザイパターン入門 4章 FactoryMethod

Java言語で学ぶデザインパターン入門

Java言語で学ぶデザインパターン入門

Creator
・Productを生成する抽象クラス
具体的な内容はサブクラスのConcreteCreatorが定める
Product
FactoryMethodで生成されるインスタンスが持つべきインタフェースを定める抽象クラス
具体的な内容はサブクラスのConcreteProductが定める

Creator(=FactoryMethod)がやるべきことは対象のインスタンスを作ること、これだけ。
Creatorが知っているのは作成対象のインスタンスとそれを作るためのメソッド。

FactoryMethodは下記4つにて構成される。
(1)、(2)は抽象クラスでOK。
パターンに応じて(3)、(4)が複数実装される。
(1)インスタンス生成を(のみを)行うクラス→Creator
(2)インスタンス生成されるクラス→Product
(3)(1)の具体的な実装クラス→ConcreteCreator
(4)(2)の実装クラス→ConcreteProduct

インスタンス生成メソッドの実装方法

1.抽象メソッドにしておく

サブクラスは必ず実装しなければならなくなる

2.デフォルトの実装を用意しておく

(4)が不要で、(2)のままで問題ない場合、サブクラスでは何も実装する必要がないので楽
ただし、(2)を直接newしたりするのであれば、(2)は具象クラスでなければならなくなる。

3.エラーにしておく

「2.」のようにデフォルトの実装を用意しておくが、コールされるとエラーとなる。
抽象メソッドとして残すと微妙な場合、具象メソッドになっているのでそのまま呼び出せるが、そのまま動かすと転けるので、実装が必要だとわからせることができる。

感想
ぼんやりとしてたが、概念はなんとなく理解できた。
ただ、やっぱり用途が思い浮かばない、せっかく学んだので活かしたいのだが。