深入解析:设计模式之访问者模式

今天面试一家公司,设计模式部分竟然问了访问者模式(Visitor)

这真是离了大谱,不问些常用的,竟然问这么冷门的 

其实这个模式也不复杂

就是假设有一个公司类

公司类里有几个员工 各司其职  假设公司的员工不发生变动 每个人都干一部分活

我们可以传入一个参数进来,规定每个人要干什么活 这就是visitor

对于每个员工来说 都有一个accept方法  表示接受任务

accept(Visitor Visit){
Visit.visit(this);//把员工自己作为参数传进去
}

Visitor 是个接口

里面有几个抽象方法

public interface Visitor
{
void visit(classA a);
void visit(classB b);
void visit(classC c);
}

对于公司而言

Public Class Company
{
List list;
public void startProject(Vistor vistor)
{
for(Employ e:list)
e.accept(vistor);
}
}

这样的话可以在不修改公司类的情况下

自定义不同属性的具体的执行方法

posted @ 2025-09-14 09:25  yjbjingcha  阅读(8)  评论(0)    收藏  举报