访问者模式

来源:互联网 发布:淘宝企业店铺要收费吗 编辑:程序博客网 时间:2024/06/06 07:15

访问者模式适用于数据结构相对稳定但算法易于变化的系统。简单来说,访问者模式就是一种分离对象数据结构与行为的方法,通过这种分离,可达到为一个被访问者添加新的操作而无需做其他的修改效果。

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;@Overridepublic void accept(Visitor visitor) {visitor.visit(this);}@Overridepublic String getSubject() {// TODO Auto-generated method stubreturn this.subject;}@Overridepublic 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 {@Overridepublic 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);}}


0 0