12.7 生成と利用を分離する
内容
生成と利用を分離することで、利用する側のコンポーネントが独立し、テストをしやすくなる。
オブジェクト指向言語では、オブジェクトを生成してからオブジェクトを利用する。生成のみ行うオブジェクト群と利用のみ行うオブジェクト群に分け、生成と利用のフェーズを分けることには意味がある。
ファクトリー
オブジェクト生成するオブジェクトをファクトリーと呼び、newをカプセル化する。
ポリモーフィズム
利用するオブジェクトは、ポリモーフィズムというテクニックを使って、実装の中身を意識せず、目的の得たい結果だけを意識して利用する。
インターフェースだけに依存しインターフェースを実装した具体的なサブクラスとの依存を切り離すテクニック。
これにより、インターフェースを実装したサブクラスに依存しない独立したコンポーネントにすることができる。サブクラスとの依存がなくなると、インターフェースのモックを用意すればよいだけになりテストがしやすくなる。(さまざまなサブクラスを考慮したテストにならなくて済む。)
学び
- 生成と利用を分離することで、利用する側のコンポーネントが独立し、テストをしやすくなる。
- このあたりってモジュールのあり方を考えるための設計原則が関係していて、デザインパターンの理解のために必要な知識だと思う。
完全に理解した状態からチョットワカル状態になっていくための必要な考え方だなぁとフと思った。
学びを活かすアイディア・行動
- 現場のコーディング規約づくり。どのクラス群が生成を担い、どのクラス群が利用を担うのか。