デザインパターン学習メモ:「Visitor」
目的
GoF本より引用する。
あるオブジェクト構造上の要素で実行されるオペレーションを表現する。Visitorパターンにより、オペレーションを加えるオブジェクトのクラスに変更を与えずに、新しいオペレーションを定義することができるようになる。
実装例
GoF本を参考に作成。Productクラスのaccept()を具体的なVisitorインスタンスを渡して実行する。
Productクラスに新しいオペレーションを定義したいときは、新たにVisitorインタフェースを実装したクラスを作成し、visitProduct()メソッドを実装すればよい。
このとき、Productクラスの変更は不要である。
Visitor.java
// Visitor役
public interface Visitor {
void visitProduct(Product product);
}
PricingVisitor.java
// Concrete Visitor役
public class PricingVisitor implements Visitor {
@Override
public void visitProduct(Product product) {
// Productをつかった任意の処理を実装する
System.out.println(product.getName());
System.out.println(product.getPrice());
}
}
Item.java
// Element役
public interface Item {
void accept(Visitor visitor);
}
Product.java
// Concrete Element役
public class Product implements Item {
private String name;
private int price;
public Product(String name, int price) {
this.name = name;
this.price = price;
}
public String getName() {
return this.name;
}
public int getPrice() {
return this.price;
}
@Override
public void accept(Visitor visitor) {
visitor.visitProduct(this);
}
}
参考文献
- エリック ガンマ、ラルフ ジョンソン、リチャード ヘルム、ジョン プリシディース(1999)『オブジェクト指向における再利用のためのデザインパターン 改訂版』本位田 真一、吉田 和樹 監訳、SBクリエイティブ
Author And Source
この問題について(デザインパターン学習メモ:「Visitor」), 我々は、より多くの情報をここで見つけました https://qiita.com/aki3061/items/52d1ba93afa94bf4c5c8著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .