Visitor パターン
Visitorパターンは、
データ構造とそのデータに対する処理を分ける
デザインパターンです。
データ構造のクラスと、
そのデータに対する処理のクラスを分け、
お互いが自分のオブジェクトのポインタを渡しあうことで、
データを処理します。
このような処理の方法をダブルディスパッチといいます。
データ処理のクラスのオブジェクトが、
それぞれのデータを渡り歩いて処理をする様子から
Visitorパターンと言われています。
このパターンを利用することで、
機能追加する際にはデータ処理クラスのみを変更すればよく、
データ構造のクラスは変更しなくて良くなります。
今回のサンプルコードは
以前のCompositeパターンのサンプルコードを使用し、
Visitorパターンでディレクトリツリーの
ファイル構成を表示する機能を実装しました。
C++によるデザインパターン11: Composite パターン - MY ENIGMA
Compositeパターンのサンプルコードと比較すると、
DirectoryとFileクラスをほとんど変更せずに、
処理を追加できていることがわかります。
しかし、このVisitorパターンを使用すると、
VisitorクラスにEntryの中身を公開する必要があるため
データのカプセル性が劣化してしまうことが、
個人的には欠点だと思います。
参考資料
myenigma.hatenablog.com
myenigma.hatenablog.com
myenigma.hatenablog.com
myenigma.hatenablog.com
myenigma.hatenablog.com
myenigma.hatenablog.com
myenigma.hatenablog.com
myenigma.hatenablog.com
myenigma.hatenablog.com
myenigma.hatenablog.com
myenigma.hatenablog.com
myenigma.hatenablog.com
myenigma.hatenablog.com
myenigma.hatenablog.com
myenigma.hatenablog.com
myenigma.hatenablog.com
myenigma.hatenablog.com
myenigma.hatenablog.com
myenigma.hatenablog.com
myenigma.hatenablog.com
myenigma.hatenablog.com
myenigma.hatenablog.com
myenigma.hatenablog.com