第二十二篇 设计模式--访问者模式
来源:互联网 发布:linux下arp 编辑:程序博客网 时间:2024/06/05 19:44
定义:表示一个作用于某个对象结构中的各元素的操作,使你可以在不改变个元素的类的前提下定义作用于这一系列元素的新操作。、
代码:
package visitor_model;import java.util.ArrayList;import java.util.List;/** * @author naivor *访问者模式-场景类 */public class VisitorModel {public static void main(String[] args) {ObjectStructure structure=new ObjectStructure();Element elementA=new ElementA();Element elementB=new ElementB();structure.attach(elementA);structure.attach(elementB);Visitor visitor1=new Visitor1();Visitor visitor2=new Visitor2();structure.accept(visitor1);structure.accept(visitor2);}}/** * * @author naivor *访问者模式-访问者抽象类 */abstract class Visitor{public abstract void visitElementA(ElementA elementA);public abstract void visitElementA(ElementB elementA);}/** * * @author naivor *访问者模式-访问者1类 */class Visitor1 extends Visitor{@Overridepublic void visitElementA(ElementA element) {//访问者1访问ElementA的业务逻辑}@Overridepublic void visitElementA(ElementB element) {//访问者1访问ElementB的业务逻辑}}/** * * @author naivor *访问者模式-访问者2类 */class Visitor2 extends Visitor{@Overridepublic void visitElementA(ElementA element) {//访问者2访问ElementA的业务逻辑}@Overridepublic void visitElementA(ElementB element) {//访问者2访问ElementB的业务逻辑}}/** * * @author naivor *访问者模式-元素抽象类 */abstract class Element{public abstract void accept(Visitor visitor); }/** * * @author naivor *访问者模式-元素A类 */class ElementA extends Element{@Overridepublic void accept(Visitor visitor) {visitor.visitElementA(this);}public void operate(){//ElementA的业务逻辑}}/** * * @author naivor *访问者模式-元素B类 */class ElementB extends Element{@Overridepublic void accept(Visitor visitor) {visitor.visitElementA(this);}public void operate(){//ElementB的业务逻辑}}/** * * @author naivor *访问者模式-元素管理类 */class ObjectStructure{private List<Element> elements=new ArrayList<Element>();public void attach(Element element){elements.add(element);}public void detach(Element element){elements.remove(element);}public void accept(Visitor visitor){for (Element element : elements) {element.accept(visitor);}}}
0 0
- 第二十二篇 设计模式--访问者模式
- 设计模式C++版:第二十二式访问者模式
- 设计模式 访问者模式
- 设计模式 - 访问者模式
- 设计模式:访问者模式
- 设计模式 - 访问者模式
- 设计模式 - 访问者模式
- 设计模式------------访问者模式
- 设计模式:访问者模式
- 设计模式--访问者模式
- 设计模式--访问者模式
- 设计模式-访问者模式
- 设计模式--访问者模式
- 设计模式-访问者模式
- 设计模式-访问者模式
- [设计模式]访问者模式
- 设计模式 - 访问者模式
- 设计模式-访问者模式
- android studio 升级到1.0后gradle method not found: 'runProguard()'报错的解决方法
- 使用python的logging模块
- Eclipse之NDK编译——常见错误的解决方法记录
- byte 字节
- C++必读经典
- 第二十二篇 设计模式--访问者模式
- WiFi流量劫持—— JS脚本缓存投毒
- IE的F12开发人员工具不显示
- MySQL链接错误集。
- Git与Repo入门
- 任何人可以任意复制代码并运用这些文档
- HDOJ 1175 连连看
- JSP学习笔记(1)
- 【BZOJ3680】吊打XXX 广义费马点 模拟退火