なんかすこしだけまとめたので、めもめも。
Clientが直接クラスをインスタンス化して役立つのは、クライアントがそのクラスを知る必要があるときだけ
Clientが知る必要がないとき、このパターンを使うといい。
動機
- インターフェースに対してプログラミングする、実装に対してではない
- パッケージの概念的重みを減らす
- Factoryに用意されたCreation Methodの意図が明確。インスタンスの構築が簡単に
問題
- 依存が循環(修正がI/Fにも及ぶから)
- Factoryでもあり、実装でもあるクラスが出来る
- 不快なときはFactoryの抽出で対応
例