C++でデザインパターンを実装していこうよ 第15回 ChainOfResponsibilityパターン

今回はChainOfResponsibilityパターンです。

たらいまわし的なことでしょうか?

まず、Approverクラスの子をSetSuccessor()メソッドで鎖状につなげます。

そしたら、その鎖に対してひとつずつ引数として渡されたPurchaseオブジェクトを受け入れるか否かをProcessRequest()メソッドで判定していきます。

もし受け入れるないなら次の要素に走査を進め、受け入れるなら終了的な感じです。

これも、普段の僕ならProcessRequest()メソッドの返り値をboolにしてから、Approver*のベクタを作ってfor文でやっちゃいそうです。

前回のVisitorはOCPっぽかったですけど今回はそんなにOCPっぽくもないし、少し使いどころが難しい気がします。

http://www.dofactory.com/Patterns/PatternChain.aspx#_self2

https://github.com/TakahashiShuuhei/DesignPatternPractice/blob/master/ChainOfResponsibility.cpp