设计模式 – 访问者模式(Visitor Pattern)

内容纲要

访问者模式(Visitor Pattern)是一种行为设计模式,它允许你在不修改现有类结构的情况下,为类中的一组对象添加新的操作。访问者模式将数据结构和数据操作分离,使得在添加新操作时,不需要修改原有数据结构。

下面是一个简单的Java代码示例,以说明访问者模式的使用:

首先,我们定义一个元素接口(Element):

public interface Element {
    void accept(Visitor visitor);
}

接着,我们为每个具体元素实现这个接口:

public class ConcreteElementA implements Element {
    @Override
    public void accept(Visitor visitor) {
        visitor.visitConcreteElementA(this);
    }

    public String operationA() {
        return "具体元素A的操作。";
    }
}

public class ConcreteElementB implements Element {
    @Override
    public void accept(Visitor visitor) {
        visitor.visitConcreteElementB(this);
    }

    public String operationB() {
        return "具体元素B的操作。";
    }
}

然后,我们定义一个访问者接口(Visitor):

public interface Visitor {
    void visitConcreteElementA(ConcreteElementA element);
    void visitConcreteElementB(ConcreteElementB element);
}

为每个具体访问者实现这个接口:

public class ConcreteVisitor implements Visitor {
    @Override
    public void visitConcreteElementA(ConcreteElementA element) {
        System.out.println("访问者对 " + element.operationA() + " 进行操作。");
    }

    @Override
    public void visitConcreteElementB(ConcreteElementB element) {
        System.out.println("访问者对 " + element.operationB() + " 进行操作。");
    }
}

现在,我们可以在客户端代码中使用访问者模式:

public class VisitorPatternDemo {
    public static void main(String[] args) {
        List<Element> elements = new ArrayList<>();
        elements.add(new ConcreteElementA());
        elements.add(new ConcreteElementB());

        Visitor visitor = new ConcreteVisitor();

        for (Element element : elements) {
            element.accept(visitor);
        }
    }
}

输出结果:

访问者对 具体元素A的操作。 进行操作。
访问者对 具体元素B

Leave a Comment

您的电子邮箱地址不会被公开。 必填项已用*标注

close
arrow_upward