小工具知识网

当前位置: 首页 > 行业知识 > 设计模式之访问者模式

行业知识

设计模式之访问者模式

2026-11-07 17:08:26 来源:互联网转载

访问者模式(Visitor)

定义

表���一个作用于某对象结构中的各元素的操作,它使你可以在不改变各元素类的前提下定义作用于这些元素的新操作。

使用场景

主要角色

  1. 元素(Element)
  2. 具体元素(ConcreteElement)
  3. 访问者(Visitor)
  4. 具体访问者(ConcreteVisitor)
  5. 对象结构(ObjectStructure)

类图

示例代码

public interface Element {    void accept(Visitor visitor);}
public class FolderElement implements Element {    private String name;    public FolderElement(String name) {        this.name = name;    }    public String getName() {        return name;    }    @Override    public void accept(Visitor visitor) {        visitor.visit(this);    }}
public class FileElement implements Element {    private String name;    public FileElement(String name) {        this.name = name;    }    public String getName() {        return name;    }    @Override    public void accept(Visitor visitor) {        visitor.visit(this);    }}

一般有几种元素就有几个visit方法

public interface Visitor {    void visit(FileElement fileElement);    void visit(FolderElement folderElement);}
public class FileNameVisitor implements Visitor {    @Override    public void visit(FileElement file) {        System.out.println("File: " + file.getName());    }    @Override    public void visit(FolderElement folder) {        System.out.println("Folder: " + folder.getName());    }}
public class Client {    public static void main(String[] args) {        Element folder = new FolderElement("code2024");        Element file = new FileElement("hello.java");        // 构建对象结构        FileSystemStructure fileSystem = new FileSystemStructure(folder,file);        // 创建访问者        Visitor fileVisitor = new FileNameVisitor();        // 对象结构接受访问者访问        fileSystem.accept(fileVisitor);    }}
Folder: code2024File: hello.java

上一篇:宝塔面板教程,轻松安装FTP服务,一步步搞定!

下一篇:nga游戏怎么选用服务器?