読者です 読者をやめる 読者になる 読者になる

MyEnigma

とあるエンジニアのブログです。#Robotics #Programing #C++ #Python #MATLAB #Vim #Mathematics #Book #Movie #Traveling #Mac #iPhone

C++によるデザインパターン13: Visitor パターン

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

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

オブジェクト指向における再利用のためのデザインパターン

オブジェクト指向における再利用のためのデザインパターン

  • 作者: エリックガンマ,ラルフジョンソン,リチャードヘルム,ジョンブリシディース,Erich Gamma,Ralph Johnson,Richard Helm,John Vlissides,本位田真一,吉田和樹
  • 出版社/メーカー: ソフトバンククリエイティブ
  • 発売日: 1999/10
  • メディア: 単行本
  • 購入: 21人 クリック: 711回
  • この商品を含むブログ (210件) を見る


Visitor パターン

Visitorパターンは、

データ構造とそのデータに対する処理を分ける

デザインパターンです。


データ構造のクラスと、

そのデータに対する処理のクラスを分け、

お互いが自分のオブジェクトのポインタを渡しあうことで、

データを処理します。

このような処理の方法をダブルディスパッチといいます。

ダブルディスパッチ - Wikipedia


データ処理のクラスのオブジェクトが、

それぞれのデータを渡り歩いて処理をする様子から

Visitorパターンと言われています。


このパターンを利用することで、

機能追加する際にはデータ処理クラスのみを変更すればよく、

データ構造のクラスは変更しなくて良くなります。


今回のサンプルコードは

以前のCompositeパターンのサンプルコードを使用し、

Visitorパターンでディレクトリツリーの

ファイル構成を表示する機能を実装しました。

C++によるデザインパターン11: Composite パターン - MY ENIGMA


Compositeパターンのサンプルコードと比較すると、

DirectoryとFileクラスをほとんど変更せずに、

処理を追加できていることがわかります。


しかし、このVisitorパターンを使用すると、

VisitorクラスにEntryの中身を公開する必要があるため

データのカプセル性が劣化してしまうことが、

個人的には欠点だと思います。


C++によるサンプルコード

下記のGitHubページにて公開しています。

cpp/Visitor.cpp at master - AtsushiSakai/cpp

参考資料

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


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

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

オブジェクト指向における再利用のためのデザインパターン

オブジェクト指向における再利用のためのデザインパターン

  • 作者: エリックガンマ,ラルフジョンソン,リチャードヘルム,ジョンブリシディース,Erich Gamma,Ralph Johnson,Richard Helm,John Vlissides,本位田真一,吉田和樹
  • 出版社/メーカー: ソフトバンククリエイティブ
  • 発売日: 1999/10
  • メディア: 単行本
  • 購入: 21人 クリック: 711回
  • この商品を含むブログ (210件) を見る