Java 设计模式 之 访问者模式
http://www.verejava.com/?id=16999202350980
package com.visit.theory;import java.util.ArrayList;public class Test
{public static void main(String[] args){ObjectStructure o = new ObjectStructure(); //依赖于ObjectStructure //实例化具体元素 o.attach(new Man()); o.attach(new Woman()); //当成功时不同元素的不同反映 Visitor success = new Success(); //依赖于抽象的Visitor接口 o.display(success); //当恋爱时的不同反映 Visitor amativeness = new Love(); //依赖于抽象的Visitor接口 o.display(amativeness); }
}package com.visit.theory;public interface Visitor
{public void visit(Man man); public void visit(Woman w); }package com.visit.theory;public interface Person
{void accept(Visitor visitor);
}package com.visit.theory;public class Woman implements Person { // 先对visitor进行类型转换,再执行visit方法,因为Visitor接口已经没有声明任何抽象方法了 public void accept(Visitor visitor) { visitor.visit(this);}
} package com.visit.theory;public class Man implements Person { // 先对visitor进行类型转换,再执行visit方法,因为Visitor接口已经没有声明任何抽象方法了 public void accept(Visitor visitor) { visitor.visit(this);}
} package com.visit.theory;public class Success implements Visitor{ public void visit(Man man) { System.out.println("当男人成功时,背后多半有一个伟大的女人"); } public void visit(Woman girl) { System.out.println("当女人成功时,背后大多有一个不成功的男人"); }
} package com.visit.theory;public class Love implements Visitor{ public void visit(Man man) { System.out.println("当男人恋爱时,凡事不懂也装懂"); } public void visit(Woman girl) { System.out.println("当女人恋爱时,遇事懂也装不懂"); } } package com.visit.theory;import java.util.ArrayList;
import java.util.List;public class ObjectStructure
{private List<Person> elements = new ArrayList<Person>(); public void attach(Person element){ elements.add(element); } public void detach(Person element){ elements.remove(elements); } //遍历各种具体元素并执行他们的accept方法 public void display(Visitor visitor){ for(Person p:elements){ p.accept(visitor); } }
}
转载于:https://www.cnblogs.com/verejava/p/9237077.html
Java 设计模式 之 访问者模式相关推荐
- Java设计模式(访问者模式-迭代器模式-观察者模式-中介者模式)
Java设计模式Ⅶ 1.访问者模式 1.1 访问者模式概述 1.2 代码理解 2.迭代器模式 2.1 迭代器模式概述 2.2 代码理解 3.观察者模式 3.1 观察者模式概述 3.2 代码理解 4.中 ...
- JAVA设计模式之访问者模式
转自: http://www.kongzid.com/archives/design20 ,更好阅读体验:http://www.kongzid.com 访问者模式(Visitor)的定义 表示一个作用 ...
- java设计模式-18访问者模式
定义 封装一些作用于某种数据结构的各元素的操作,它可以在不改变数据结构的前提下定义作用于这些元素的新的操作. 在被访问的类里面加一个对外提供接待访问者的接口 需要对一个对象结构中的对象进行很多不同操作 ...
- Java设计模式:访问者模式,同一数据对象,不同访问者索取目的不同
/*** 员工接受不同部门的数据访问. * 但是不同部门访问该名员工获取的数据不相同.* * @author zhangfly** @param <T>*/ public abstract ...
- 由电脑专卖系统引发的Java设计模式:访问者模式
访问者模式 定义 意图 解决问题 何时使用 优缺点 结构 电脑专卖系统 定义 访问者模式是对象的行为型模式,它的目的是封装一些施加于某些数据结构元素之上的操作,一旦这些操作需要修改的话,接收这个操作的 ...
- Java设计模式作业-访问者模式
某软件公司需要设计一个源代码解析工具,该工具可以对源代码进行解析和处理,在该工具的初始版本中,主要提供了以下 3 个功能.所有代码和接口均在一个package内. 目录 作业内容 一.UML图 二.代 ...
- Java设计模式分为创建模式, 结构模式, 行为模式 3种类型
Java设计模式之创建模式包括: Factory, 工厂模式 Singleton, 单例模式 Builder, 建造模式 Prototype, 原型模式 Java设计模式之结构模 ...
- java备忘录模式应用场景_图解Java设计模式之备忘录模式
图解Java设计模式之备忘录模式 游戏角色状态恢复问题 游戏角色有攻击力和防御力,在大战Boss前保存自身的状态(攻击力和防御力),当大战Boss后攻击力和防御力下降,从备忘录对象恢复到大战前的状态. ...
- Java设计模式之策略模式与状态模式
一.策略模式定义 定义:策略模式定义了一系列的算法,并将每一个算法封装起来,而且使他们之间可以相互替换,策略模式可以在不影响客户端的情况下发生变化. 好了,定义看看就完了,我知道你很烦看定义. 二.策 ...
- Java设计模式(建造者模式-适配器模式-桥接模式)
Java设计模式Ⅲ 1.建造者模式 1.1 建造者模式概述 1.2 建造者模式的注意事项和细节 1.3 代码理解 2.适配器模式 2.1 类适配器模式 2.1.1 代码理解 2.2 对象适配器模式 2 ...
最新文章
- C 判断 —— switch语句(多个switch值与一组语句联系起来、case顺序是可任意的,default不一定是最后一个case)
- MapReduce数据连接
- mysql导出linux,linux下mysql导出导入方法
- linux 定时清理tomcat日志
- JVM-垃圾收集器与内存分配策略
- 《A Novel Pipeline Approach for Efficient Big Data Broadcasting》阅读报告
- LeetCode 481. 神奇字符串(找规律)
- linux cd -目录,linux cd
- 不用于mysql权限管理的24260_[MySQL Reference Manual] 24 MySQL sys框架
- windows下利用批处理命令生成maven项目(java、javaWeb)
- Xen虚拟化环境安装和常用命令
- 微信扫码点餐帮助商家赚钱的方法
- Beginning Lua with World of Warcraft Add-ons第三章翻译总结及一些工具
- linux 域名解析 命令,Linux动态域名解析命令脚本
- php web helloworld,webim_server.php
- 为Termux安装图形化界面
- 冬季六种低热量时蔬助你排毒
- Plant Design Review Based on AnyCAD
- C语言指针 *p++和*++p及++*p的区别
- 在李嘉诚传中给年轻人提出了53条人生忠告