Java设计模式(行为型)之-访问者模式
来源:互联网 发布:剑灵人女捏脸数据分享 编辑:程序博客网 时间:2024/05/23 21:26
Java设计模式(行为型)之-访问者模式(Visitor)
行为型模式分类图:
访问者模式把数据结构和作用于结构上的操作解耦合,使得操作集合可相对自由地演化。访问者模式适用于数据结构相对稳定算法又易变化的系统。因为访问者模式使得算法操作增加变得容易。若系统数据结构对象易于变化,经常有新的数据对象增加进来,则不适合使用访问者模式。访问者模式的优点是增加操作很容易,因为增加操作意味着增加新的访问者。访问者模式将有关行为集中到一个访问者对象中,其改变不影响系统数据结构。其缺点就是增加新的数据结构很困难。
简单来说,访问者模式就是一种分离对象数据结构与行为的方法,通过这种分离,可达到为一个被访问者动态添加新的操作而无需做其它的修改的效果。类图如下:
示例代码如下:
public class VisitorTest { public static void main(String[] args) { Visitor visitor=new MyVisitor(); Subject subject=new MySubject(); subject.accept(visitor); }}interface Visitor{ public void visit(Subject sub);}class MyVisitor implements Visitor{ @Override public void visit(Subject sub) { System.out.println("visit the subject: "+sub.getSubject()); } }// Subject 类,accept 方法,接受将要访问它的对象;getSubject() 方法获取将要被访问的属性interface Subject{ public void accept(Visitor visitor); public String getSubject();}class MySubject implements Subject{ @Override public void accept(Visitor visitor) { visitor.visit(this); } @Override public String getSubject() { return "love"; } }
输出结果:visit the subject: love
该模式适用场景:如果我们想为一个现有的类增加新功能,不得不考虑几个事情:1、新功能会不会与现有功能出现兼容性问题?2、以后会不会再需要添加?3、如果类不允许修改代码怎么办?面对这些问题,最好的解决方法就是使用访问者模式,访问者模式适用于数据结构相对稳定的系统,把数据结构和算法解耦,
0 0
- Java设计模式之行为型模式(访问者模式)
- java设计模式(行为型)之访问者模式
- Java设计模式(行为型)之-访问者模式
- 设计模式-行为型之访问者模式
- 行为型:设计模式之访问者模式(二十三)
- Java设计模式(21)行为型:访问者模式
- 设计模式 - 行为型模式 - 访问者模式
- 设计模式->行为型模式->访问者模式
- 【设计模式】行为模式之Visitor访问者
- Java 设计模式之访问者模式的详解(行为模式)
- 设计模式(行为型)之访问者模式(Visitor Pattern)
- JAVA设计模式(21) —<行为型>访问者模式(Visitor)
- Java设计模式_(行为型)_访问者模式
- 行为型之访问者模式
- 设计模式-行为-访问者
- 设计模式--行为型--访问者模式
- 设计模式18:访问者模式【行为型】
- [设计模式-行为型]访问者模式(Vistor)
- Cocos2d-x 3.10心得(06)- 运动模糊
- hdu 5929 Basic Data Structure 2016CCPC东北地区大学生程序设计竞赛
- 常犯错误_inflate后找控件
- C语言实验——分数序列
- 漫谈数据库索引
- Java设计模式(行为型)之-访问者模式
- eclipse下cvs的使用
- Part 52 - Partial views in mvc
- TextView设置抗锯齿,及其他常用的一些属性设置
- React Native 学习笔记二十一(导航器三方 插件学习)
- AS启动模拟机时关于“Intel HAXM is required to run this AVD,VT-x is disabled in BIOS”问题的解决
- 初学plc编程注意的问题
- Matlab打开AVI格式的视频并把每帧图片都读取出来
- JBOSS-eap-6.4.0增加oracle数据源