深入解析:设计模式之访问者模式
今天面试一家公司,设计模式部分竟然问了访问者模式(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);
}
}
这样的话可以在不修改公司类的情况下
自定义不同属性的具体的执行方法