Design Pattern | Chain of Responsibility(責任連鎖)

Chain of Responsibilityパターンとは?

  • Chainは連鎖、Responsibilityは責任を意味する。つまりChain of Responsibilityは責任の連鎖という意味である。実際には、順番に回していく構造と考えると理解しやすい。
  • Chain of Responsibilityパターンは、複数のオブジェクトをチェーンでつなぎ、そのチェーンを順番にたどりながら最終的な処理オブジェクトを決める方式である。
  • ある人に要求が来たとき、その人が処理できれば処理する。処理できなければ、その要求を「次の人」へ渡す。これを繰り返すのがChain of Responsibilityパターンである。
  • GoFのデザインパターンでは、振る舞いに関するデザインパターンに分類される。

Chain of Responsibilityパターンのサンプルプログラム

入力された問題を、いずれかのサポート役で解決するプログラムである。

Class Diagram
Chain of Responsibility Pattern Class Diagram

主な役割は、発生した問題を表すTrouble、共通の支援役であるSupport、そして何もしない支援、上限値で判断する支援、奇数を処理する支援、特定番号を処理する支援などの具象クラスである。各支援役は自分で解決できるかを判断し、できなければ次の支援役へ問題を渡す。

メリット

このパターンは、要求を出す側と実際に処理する側を分離する。適切な処理役が見つかるまで要求をチェーン上で渡せるため、要求元を変更せずに処理役の追加、削除、順序変更がしやすい。