访问者模式:访问数据结构并处理数据

访问者模式是Java中的一种行为型设计模式,它允许你定义在不改变被访问对象(如类、接口等)结构的前提下,对其内部的元素访问和操作。该模式适用于需要对一个复杂对象结构(如代码中的类层次结构)进行多种不同操作的场景。

示例代码

// 定义被访问者接口
interface Element {
void accept(Visitor visitor);
}
// 定义具体的被访问者类
class ConcreteElement implements Element {
@Override
public void accept(Visitor visitor) {
visitor.visit(this);
}
// 具体元素特有的方法
public String operation() {
return "ConcreteElement";
}
}
// 定义访问者接口
interface Visitor {
void visit(ConcreteElement concreteElement);
}
// 定义具体的访问者类
class ConcreteVisitor implements Visitor {
@Override
public void visit(ConcreteElement concreteElement) {
System.out.println(concreteElement.operation() + " visited by ConcreteVisitor.");
}
}
// 测试代码
public class Main {
public static void main(String[] args) {
Element element = new ConcreteElement();
Visitor visitor = new ConcreteVisitor();
// 在不改变被访问者对象结构的情况下,对其内部元素进行访问和操作
element.accept(visitor);
}
}

以上代码中,Element 接口定义了一个 accept 方法,该方法接收一个 Visitor 参数,用于在 ConcreteElement 类中调用 Visitor 实例的 visit 方法进行具体的访问和操作。

ConcreteElement 实现了 Element 接口,并重写了 accept 方法。ConcreteVisitor 实现了 Visitor 接口,并重写了 visit 方法,用于对 ConcreteElement 元素进行具体的访问和操作。

在测试代码中,我们创建了一个 ConcreteElement 实例和一个 ConcreteVisitor 实例,并将 ConcreteElement 实例传递给 ConcreteVisitor 实例的 visit 方法,从而实现了对 ConcreteElement 元素的访问和操作。

posted @   穆海如枫  阅读(18)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
点击右上角即可分享
微信分享提示