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

今回は、Visitorパターンです。
初めて見たときは完全に"?"でしたが、今見ると少し面白いですね。

訪問されるオブジェクト(例ではElementインタフェースの実装であるEmployeeとか)のコレクション(Employees)に、訪問するオブジェクト(IVisitorインタフェースの実装であるIncomeVisitorとか)を渡してEmployeesの各要素に各Visitorで定義されているメソッドを作用させる的なことですね。

普段の僕ならEmployeesにメソッドを追加しておしまい、ってやっちゃいます。

が、「拡張に対して開いていて、変更に対して閉じているべき」っていうOCPに照らしてみると、Employeesにメソッドを追加しちゃうと変更に対して閉じていないことになっちゃいます。

Visitorパターンを使うことで、EmployeeにもEmployeesにも変更を加えることなく、あらたな振る舞いを追加することが出来ますね!

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

https://github.com/TakahashiShuuhei/DesignPatternPractice

今日まで14日間休まず続けてきましたが、明日は用事があるのでお休みです。