java实现23种设计模式之访问者模式
在访问者模式(Visitor Pattern)中,我们使用了一个访问者类,它改变了元素类的执行算法。
通过这种方式,元素的执行算法可以随着访问者改变而改变。这种类型的设计模式属于行为型模式。
根据模式,元素对象已接受访问者对象,这样访问者对象就可以处理元素对象上的操作。
假如某个学科接受访问者访问
package com.ceshi20; public interface Subject { public void accept(Visitor visitor); public String getSubject(); }
package com.ceshi20; public class MySubject implements Subject{ @Override public void accept(Visitor visitor) { visitor.visit(this); } @Override public String getSubject() { return "化学物理"; } }
package com.ceshi20; public interface Visitor { public void visit(Subject sub); }
package com.ceshi20; public class MyVisitor implements Visitor{ @Override public void visit(Subject sub) { System.out.println("访问课程:"+sub.getSubject()); } }
package com.ceshi20; public class Test { public static void main(String[] args) { Visitor visitor = new MyVisitor(); Subject sub = new MySubject(); sub.accept(visitor); } }
运行结果:
之后如果有其他课程,新建实现类即可。
该模式适用场景:如果我们想为一个现有的类增加新功能,不得不考虑几个事情:
1、新功能会不会与现有功能出现兼容性问题?
2、以后会不会再需要添加?
3、如果类不允许修改代码怎么办?
面对这些问题,最好的解决方法就是使用访问者模式,访问者模式适用于数据结构相对稳定的系统,把数据结构和算法解耦
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步