版权声明:本文为博主原创文章,未经博主允许不得转载。个人公众号:百草疯茂 https://blog.csdn.net/wang_pengyu/article/details/84925790
package com.test.DPs.XingWei.Visitor;
/**
* 行为型:Visitor-访问者 外观:作用面为 对象
*
* 用途:表示一个作用于某对象结构中的各元素的操作。
* 它是你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。
*
* 理解:动态为被访问者添加新操作。
*/
interface Visitor{
void visit(Subject sub);
}
interface Subject{
void accept(Visitor visitor);
String getSubject();
}
class MyVisitor implements Visitor{
@Override
public void visit(Subject sub){
System.out.println("Visit the subject:"+sub.getSubject());
}
}
class MySubject implements Subject{
@Override
public void accept(Visitor visitor){
visitor.visit(this);
}
@Override
public String getSubject(){
return "Love";
}
}
class Test {
public static void main(String[] args) {
Visitor visitor = new MyVisitor();
Subject sub = new MySubject();
sub.accept(visitor);
}
}