设计模式--访问者模式
2016-04-09 00:00
267 查看
摘要: 简单记录访问者模式的使用。
访问者模式(visitor):
访问者模式应用的场景:
访问者模式的优点:
访问者模式的缺点:
简单概括访问者模式:
示例:
访问者模式测试类VisitorTest.java
主题接口类Subject.java
访问接口类Visitor.java
具体的主题类SubjectImpl.java
具体的访问者类VisitorImpl.java
访问者模式(visitor):
把数据结构和作用于结构上的操作解耦合,使得操作集合可相对自由地演化。
访问者模式应用的场景:
适用于数据结构相对稳定算法又易变化的系统,把数据结构和算法解耦。
访问者模式的优点:
增加操作很容易,因为增加操作意味着增加新的访问者。 访问者模式将有关行为集中到一个访问者对象中,其改变不影响系统数据结构。
访问者模式的缺点:
增加新的数据结构很困难。
简单概括访问者模式:
是一种分离对象数据结构与行为的方法,通过这种分离,可达到为一个被访问者动态添加新的操作而无需做其它的修改的效果。
示例:
访问者模式测试类VisitorTest.java
/** * 访问者模式测试类 * * @author Kevin * @date 2016-3-16 */ public class VisitorTest { public static void main(String[] args) { Visitor visitor = new VisitorImpl(); Subject subject = new SubjectImpl(); subject.accept(visitor); } }
主题接口类Subject.java
/** * 主题接口 * * @author Kevin * @date 2016-3-16 */ public interface Subject { /** * 更新主题 * * @author Kevin * @param visitor 访问者 */ void accept(Visitor visitor); /** * 获取主题 * * @author Kevin * @return 主题名称 */ String getSubject(); }
访问接口类Visitor.java
/** * 访问接口 * * @author Kevin * @date 2016-3-16 */ public interface Visitor { /** * 访问主题 * * @author Kevin * @param subject 主题 */ void visit(Subject subject); }
具体的主题类SubjectImpl.java
/** * 具体的主题 * * @author Kevin * @date 2016-3-16 */ public class SubjectImpl implements Subject { @Override public void accept(Visitor visitor) { visitor.visit(this); } @Override public String getSubject() { return "love"; } }
具体的访问者类VisitorImpl.java
/** * 具体的访问者 * * @author Kevin * @date 2016-3-16 */ public class VisitorImpl implements Visitor { @Override public void visit(Subject subject) { System.out.println("visit the subject: " + subject.getSubject()); } }
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- c++11 + SDL2 + ffmpeg +OpenAL + java = Android播放器
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序