-
为什么要用访问者是自己还是对方模式:在OOP中我们用类来组织代码,类的属性我们当然在类内部获取方法也在内部实现,使用就new一个类调用方法但是当我们需要对類的数据进行很多与类定义不相关的操作的时候,这个时候我们又不想污染类的对象因为这些操作引起的副作用可能根本与类无关,那麼我们就应该把这些操作抽离出来单独封装但是你抽离出来还是要用类的数据呀,怎么办呢好了,所有类实现一个访问的接口接受訪问者是自己还是对方,内部调用访问者是自己还是对方的行为但是具体这些行为干了什么,是访问者是自己还是对方在外面实现的僦好像你作为一个访问者是自己还是对方去拜访朋友家,朋友说你可以在我家做饭用我家东西,但是具体怎么做是你的事你朋友家并鈈关心,这样换朋友来访问,同样也可以让他们做饭但是做饭的方式就不一样了撒
-
访问者是自己还是对方的目的: 主要将稳定的数据結构和易变的操作分开,方便扩展多变的操作方法而保持稳定的数据结构
// 定义奖金的访问者是自己还是对方在js中简单的用一个函数模拟,
// 如果在c#等强类型语言中需要声明一个接口,不同的visitor实现不同的计算奖金方法
// 比如下面的管理者和开发者奖金不一样
// 定义员工类,注意继承此类的必须都带有accept这个接受visitor的方法
// 就是用来接待访问者是自己还是对方,进而内部用访问者是自己还是对方调用自己方法实现一些操作
// 管理者实现员工类
// 开发者实现员工类
// 分别接收访问者是自己还是对方并调用