/**
* 访问者模式
* @author TMAC-J
* 在客户端和元素之间添加一个访问者
* 当你需要添加一些和元素关系不大的需求时,可以直接放在访问者里面
* 或者是元素之间有一些公共的代码块,你可以把它放在访问者里面,就不用写重复代码了
* 适用于元素数据基本不变,操作不断变化的场景
* 可以不改变元素类,只改变访问者类,个人觉得这个访问者类相当于一个管理器
* 和迭代子模式的区别是迭代子模式主要是针对于一个聚合,其提供的最主要功能是遍历
* 访问者是针对某个元素,情况是元素结构不变,操作多变的情况
* 其实设计模式不用这么死板,只要符合开闭等这些设计模式原则就可以
*/
public class VisitorPattern { interface Element{ void doSomething(); void accept(IVisitor visitor);
} public class ConcreteElement implements Element{ @Override
public void doSomething() {
System.out.println("这是具体元素!");
} @Override
public void accept(IVisitor visitor) {
visitor.visit(this);
} } interface IVisitor{
void visit(Element element);
} public class ConcreteVisitor implements IVisitor{ @Override
public void visit(Element element) {
element.doSomething();
} } public void test(){
IVisitor visitor = new ConcreteVisitor();
visitor.visit(new ConcreteElement());
} }

最新文章

  1. Spring基于AOP的事务管理
  2. linux中快速清空文件内容的几种方法
  3. C++11
  4. ESXi cron jobs
  5. 内省—beanutils工具包
  6. ASP.NET Ajax核心对象
  7. sql存在一个表而不在另一个表中的数据
  8. poj 2031 Building a Space Station(prime )
  9. WPF DataGrid某列使用多绑定后该列排序失效,列上加入 SortMemberPath 设置即可.
  10. ActiveX,ATL和COM技术
  11. OpenStack high-level Functionsenabled
  12. server正式的环境性能测试nginx-php 指着寻求突破的表现
  13. List集合对象中的排序,随机显示
  14. Java NIO学习笔记六 SocketChannel 和 ServerSocketChannel
  15. H5+混合移动app应用开发——开篇
  16. 微软XAML Studio - WPF, Sliverlight, Xamarin, UWP等技术开发者的福音
  17. 『Island 基环树直径』
  18. python----函数初识
  19. i3 窗口管理器使 Linux 更美好
  20. HTTP的cookie

热门文章

  1. 关于几个主流语音SDK的接入问题
  2. Partition1:新建分区表
  3. android键盘
  4. Xamarin+Prism小试牛刀:定制跨平台Outlook邮箱应用(后续)
  5. 安装eclipse的maven插件
  6. C# await和async
  7. Node.js使用PM2的集群将变得更加容易
  8. android手机登录时遇到“QQ安全登录发现病毒”解决
  9. Mysql - 性能优化之子查询
  10. 微软收购Xamarin,你怎么看?