
080
図の網掛け❶部分の構造はStrategyパターンです。Strategyパター
ンでは、インターフェースを導入することで具体的なアルゴリズムをク
ライアントから切り離します。クライアントが抽象にのみ依存し実装の
詳細には左右されなくすることで、アルゴリズムの交換可能性をもたら
すのがStrategyパターンのポイントです。
また、この例ではクライアントである
OvertimePayCalculator
から
OvertimePayPolicy
インターフェースの実装オブジェクトを手に入れる
ため、
OvertimePayPolicyFactory
クラスの
of
メソッドを呼び出してい
ます(図の網掛け❷部分)。これは、具体的なオブジェクト生成方法を
抽象化してクライアントから切り離すFactory Methodパターンを適用
した設計です。
さらにもう一つ。注文を登録するユースケースの例では、注文コント
ローラから見て注文登録サービスの背後に存在するオブジェクトは隠蔽
されているという話をしました。このような構造をFacadeパターンと
言います。モジュールを構成する一つ一つのコンポーネントにクライア
ントから直接アクセスするとモジュール間の結合度が上がってしまうた
め、それを避けるためにFacadeを経由してモジュールの提供する機能
を利用します(facadeは建築物の正面部分を意味するフランス語です)。
このように、SOLID原則に従った設計を行うために定石として頻繁
に使用するデザインパターンがあるので、押さえておく必要があるで ...