プログラミングの魔物

エラー、バグ、仕様変更と戦うブログ

14.ChainOfResponsibility 責任のたらい回し

ある要求を処理するオブジェクトをダイレクトに決められない場合に、オブジェクトを鎖のようにつないでおき、そのオブジェクトを順次渡り歩いて目的のオブジェクトを決定する。

f:id:p-monster:20121218195618p:plain

Handler・・・要求を処理するAPI。次の人(Handler)を保持しておき、自分で処理できなければその人にたらい回し。
ConcreteHandler・・・Handlerの実装
Client・・・最初のConcreteHandlerに要求を出す

ウィンドウシステムにおけるコンポーネント(ボタンやテキストボックス)の関係など。入力を子オブジェクトに受け渡しする。

  • 要求を出す人と処理する人をゆるやかに結びつける。
  • 動的に連鎖の形態を変える。
  • 自分の仕事に集中できる。

関連しているパターン

Composite・・・Handler役にはCompositeパターンが登場することがよくある
Command・・・Handler役に対して投げられる「要求」には、Commandパターンが使われる場合がある

参考:

増補改訂版Java言語で学ぶデザインパターン入門

増補改訂版Java言語で学ぶデザインパターン入門