javaでのChainOfResponsibilityパターン

Chain of Responsibilityパターンとは、その名の通り責任が連鎖する構造を表すためのパターンです。
あるオブジェクトで解決できない問題を別のオブジェクトにたらい回すようにするのがツボで、そうすることで解決できなかった場合の処理を簡略化できます。

ソースコードを見た方が理解が早いと思うので、いつも通りサンプルコードを示したいと思います。
某有名RPGを模した例で、3匹の味方モンスターが色々な敵モンスターと戦い、その結果を表示するというサンプルコードです。
(なお、今回のサンプルコードでは、このデザインパターンとは直接関係のないEnumクラスも出てきますが、これは同じ定数が何度も出てくるサンプルであるために簡略化のために使用しているので、「責任をたらい回す」という本質とは関係ありません)

【サンプルコード】

・MonsterAttributeEnum.java

・EnemyMonster.java

・AllyMonster.java

・MonsterBattleMain.java

【実行結果】


いかがでしたでしょうか。

今回紹介した Chain of Responsibilityパターンは、ある要求を処理するオブジェクトが複数存在する場合に適用することで、プログラムの再利用が容易になるというパターンです。
ある業務命令をどの役職の社員で処理するか(一般社員なのか、課長なのか、部長なのか、社長なのか)、あるイベントをどのレベルのメッセージで出力するか(正常なのか、警告なのか、異常なのか)、といった場面で利用すると有効です。

まだ紹介していない便利なデザインパターンとしては、Mediatorパターン、Stateパターン、Commandパターンといったものがあります。
これらのパターンもおいおい紹介していきたいと思います!

カテゴリーjava

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA