设计模式22——Visitor设计模式
来源:互联网 发布:mac os rm rf 恢复 编辑:程序博客网 时间:2024/06/07 18:36
Visitor访问者设计模式是在不修改已有程序结构的前提下,通过添加额外的“访问者”来完成对已有代码功能的提升。
Visitor访问者设计模式的角色:
(1) 访问者角色(Visitor):声明一个访问接口。接口的名称和方法的参数标识了向访问者发送请求的元素角色。这样访问者就可以通过该元素角色的特定接口直接访问它。
(2) 具体访问者角色(Concrete Visitor):实现访问者角色(Visitor)接口
(3)元素角色(Element):定义一个Accept操作,它以一个访问者为参数。
(4) 具体元素角色(Concrete Element):实现元素角色(Element)接口。
(5) 对象结构角色(Object Structure):具体元素的集合,提供一个高层的接口允许访问者角色访问它的元素。
Visitor访问者设计模式结构如下:
Visitor访问者设计模式例子代码如下:
//抽象元素interface IElement{public void accept(IVisitor visitor);}//具体元素class ElementA implements IElement{public void accept(IVisitor visitor){visitor.visit(this);}public void operationA(){System.out.println(“ElementA do operationA()……”);}}class ElementB implements IElement{public void accept(IVisitor visitor){visitor.visit(this);}public void operationB(){System.out.println(“ElementB do operationB()……”);}}class ElementC implements IElement{public void accept(IVisitor visitor){visitor.visit(this);}public void operationC(){System.out.println(“ElementC do operationC()……”);}}//抽象访问者interface IVisitor{public void visit(ElementA element);public void visit(ElementB element);public void visit(ElementC element);}//具体访问者class MyVisitor implements IVisitor{public void visit(ElementA element){element.operationA();}public void visit(ElementB element){element.operationB();}public void visit(ElementC element){element.operationC();}} Public class VisitorDemo{public static void main(String[] args){IElement[] list = {new ElementA(), new ElementB(), new ElementC()};IVisitor visitor = new MyVisitor();for(int i = 0; i < list.length; i++){list[i].accept(visitor);}}}
Visitor访问者设计模式有以下两个特点:
(1).对元素的访问不是访问者主动发起的,而是通过元素接收访问者来访问自己。
(2).对元素的操作不是元素自己主动调用,而是通过访问者的访问方法来操作元素。
JDK中访问者模式的应用:
•javax.lang.model.element.Element和javax.lang.model.element.ElementVisitor
•javax.lang.model.type.TypeMirror和javax.lang.model.type.TypeVisitor
•javax.lang.model.element.AnnotationValue和javax.lang.model.element.AnnotationValueVisitor
- 设计模式22——Visitor设计模式
- 设计模式22——Visitor设计模式
- 设计模式——访问者模式(Visitor)
- 设计模式—Visitor访问者模式
- 设计模式 — 访问者模式(Visitor Method)
- JAVA设计模式—访问者模式(Visitor)
- 深入浅出设计模式(22)——Visitor模式
- 设计模式:Visitor模式
- 设计模式-----Visitor模式
- 设计模式:VISITOR模式
- 设计模式--Visitor 模式
- 设计模式之Visitor
- 设计模式之Visitor
- 设计模式之Visitor
- 设计模式之Visitor
- visitor设计模式
- 设计模式之Visitor
- 设计模式之Visitor
- 页面加载完成后执行js代码
- SQL Server 日期转换格式
- keyboard中key属性介绍
- mysql预处理学习和总结
- jQuery基础之二 -- 选择器
- 设计模式22——Visitor设计模式
- VC 如何得到系统所用的语言?
- select()函数以及FD_ZERO、FD_SET、FD_CLR、FD_ISSET
- omnimeeting配置全过程
- window相关属性
- 转:linux目录结构及主要内容
- linux 内核调试--KDB 入门指南
- android window相关属性(二)
- 小孩睡觉模拟(Observer设计模式)