访问者模式将有关行为集中到一个访问者对象中,其改变不影响系统数据结构
代码如下:
//访问者:(功能,读取被访问者的数据或调用其方法)
public interface Visitor {
public void visit(Subject sub);
}
public class MyVisitor implements Visitor {
@Override
public void visit(Subject sub) {
System.out.println("visit the subject:"+sub.getSubject());
}
}
//被访问者
public interface Subject {
public void accept(Visitor visitor);
public String getSubject();
}
public class MySubject implements Subject {
@Override
public void accept(Visitor visitor) {
visitor.visit(this);
}
@Override
public String getSubject() {
return "love";
}
}
//测试
public class Test {
public static void main(String[] args) {
Visitor visitor = new MyVisitor();
Subject sub = new MySubject();
sub.accept(visitor);
}
}
综:拜访者需要知道被拜访者的资源,因此,接口的使用是此例子的核心
父文链接