访问者模式适用于数据结构相对稳定但算法易于变化的系统。简单来说,访问者模式就是一种分离对象数据结构与行为的方法,通过这种分离,可达到为一个被访问者添加新的操作而无需做其他的修改效果。
package mode.visitor; /**定义被访问对象的接口,这里在接口中定义了accept方法,用来接收不同的visitor实体,做不同的访问工作; * 同时在接口中定义了subject属性的get和set方法。 * * */ public interface Subject { public void accept(Visitor visitor); public String getSubject(); public void setSubject(String subject); }
package mode.visitor; /** * * 定义一个实际的被访问对象,实现接口中的所有方法 * * */ public class MySubject implements Subject { private String subject; @Override public void accept(Visitor visitor) { visitor.visit(this); } @Override public String getSubject() { // TODO Auto-generated method stub return this.subject; } @Override public void setSubject(String subject) { this.subject = subject; } }
package mode.visitor; /** * * 定义访问者的接口,有一个visit方法用来访问被访问对象 * * */ public interface Visitor { public void visit(Subject subject); }
package mode.visitor; /** * * 定义一个具体的visitor,实现具体的visit方法 * * */ public class MyVisitor implements Visitor { @Override public void visit(Subject subject) { subject.setSubject("test"); System.out.println(subject.getSubject()); } }
package mode.visitor; public class Test { public static void main(String[] args) { Visitor visitor = new MyVisitor(); Subject sub = new MySubject(); sub.accept(visitor); } }
原文地址:http://blog.csdn.net/u012613903/article/details/44175857