一、什么是访问者模式
访问者模式本质上解决的是多对多的关系。分离了数据结构和业务逻辑,是若干同类不相似的数据结构和其重载方法之间的多对多的对应关系。
例如:一个公司有若干职位,这些职位的工作有些相同有些不同。在这种多对多的关系中,一般采用多态和方法重载来解决。但是对于职位集合中若干不同的职位而言,方法重载无法对抽象出来的父类进行细分和识别,并进一步执行操作,这个时候只能依赖于职位本身挑选工作。
代码实现:见我的github:访问者模式学习笔记
二、存在场景
当一个对象结构包括很多类对象,它们有不同的接口,而系统要求这些对象实施一些依赖于某具体类的操作时,就可以使用访问者模式。
三、设计思路
一个父类,两个接口。数据结构(实体类)的父类、数据结构(接受者)的接口、访问者的接口。
子类继承数据结构(实体类)父类并实现数据结构(接受者)的接口,子类通过接受者来调用访问者实现功能。
注意事项:测试用的数据结构的集合,必须是满足接口的集合,不能是满足父类的集合
四、参考博客