设计模式22——Visitor设计模式
来源:互联网 发布:杨辉三角c语言程序 编辑:程序博客网 时间:2024/05/20 20:48
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();
}
publi 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
- 为什么越简单的技术对于开发人员越难
- Raspberry Pi开始流行 小心暗藏风险
- 花季少女都去哪里了?
- QT开源的ZIP
- 一回头u
- 设计模式22——Visitor设计模式
- mysql密码掉了
- GetCurrentTime(),GetLocalTime(),GetSystemTime()之间的区别
- 转载!!!Java中Collections类的排序sort函数两种用法
- SQL Server LocalDB 在 ASP.NET中的应用
- JNI编程入门(-)
- 发现jQuery UI中Tooltip的一个小Bug
- uchome模板缓存文件存放位置
- net start mysql服务名无效