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

发布时间 2023-06-15 17:03:19作者: 穆海如枫

访问者模式是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 元素的访问和操作。