【オブジェクト指向のこころ】9章 Strategyパターン
「デザインパターンとともに学ぶオブジェクト指向のこころ」の学習記録。
「第9章 Strategyパターン」のまとめ。
Strategyは戦略という意味。
流動的要素をカプセル化し、交換可能なものにする方法。
適用例
SalesOrder(注文)クラスは税金の計算処理の機能を備えている。
アプリケーションが完成した後、税金の取り扱いを変える必要があった。
継承を利用した例
この方法の問題は以下のようなものがある。
- 更にドイツを扱う場合どうするか?どのクラスを継承するか?
- 他の流動的要素(例えば、日付フォーマット、言語、送料)が発生したらどうするか?
- カナダの地域内でこれらが変化する場合はどうするか?
それでも無理やり継承で実装すると深い継承改装ができ、凝縮度が低く理解しにくいコードとなっていく。
Strategyパターンを適用した例
流動的な要素をカプセル化し、集約させる。
更に流動的な要素があれば、同様に集約させれば良い。
テストもアルゴリズム毎に行えるようになる。
※他の本やWebの情報ではStrategyはInterfaceとしているものが多い。
問題領域の分析を行い、時と場合に応じて使い分ける複数の業務規則を洗い出せた際は、Strategyパターンの使用可否を考えるようにするのが良い。