1.访问者模式,有两个主体,一个是访问者,一个是被访问者
2.一般来说,这两个的联系太紧密,直接和在一起就可以了,为什么要分开。
3.因为,对于被访问者来说,它比较固定,不会改变,所以抽出来,干净利落。而访问者可以拓展,可以被继承。
4.访问者的visit方法的参数是被访问者,被访问者的accept方法的参数是访问者
5.有一个容器来收纳被访问者者,提供添加被访问者和获取被访问者的方法
举个例子:
访问者:果农,山林管理员
被访问者:果树,梨树
容器:山
这座山只适合种果树和梨树,山上可以继续种树,也可以通过山知道树。
果树和梨树可以被果农和管理员摘果子
果农和管理员可以找到果树和梨树
对于数据比较稳定不会变的,可以抽象成这三个对象,访问者,被访问者,存储被访问者的容器