Factory Method
スーパークラスを定義して、処理はサブクラスが行う スーパークラスがサブクラスに依存しないから改修はサブクラスだけで済む
スーパークラスは「登録する」ことだけ定義されているので、サブクラスに依存しない
Builderパターンとの違い
- Builder
- クラスのアウトラインは抽象クラス
- 処理を持ったサブクラスと組み合わせて複雑な処理を実現
- Factory Method
- 抽象クラスには概念くらいアバウトな定義だけ(登録するなど)
- サブクラスは登録する処理だったら何でもOK
- 抽象クラスがサブクラスに依存しないので修正範囲を切り分けられる
Abstract Factoryパターンとの違い
- Abstract Factory
- クラスごと(クラスに定義されている一連の処理をまとめて)サブクラスが実装
- Factory Method
- メソッド単位でサブクラスが実装