定义:
封装某些作用于某种数据结构中各元素的操作,它可以在不改变数据结构的前提下定义作用于这些元素的新的操作
解释:
定义太抽象了,形象地解释一下。已经有一类元素,比如动物园中的动物。外界(包括饲养员等各角色)会对他们有一些操作:抚摸,访问者模式中会定义一个访问者,把抚摸这个操作封装起来,作用就是,在不改变动物数据结构的前提下,定义新的操作或者同一操作的新的实现。
业务场景:
上篇文章我们提到了,会有不同的饲养员,按同样的顺序执行投喂作业。那么同样的,不同的动物,在接受投喂后,会有不同的反应。
张三喂的时候:狗嘛汪汪汪,猫呀喵喵喵,牛呀哞哞哞。
李四喂的时候:狗嘛喵喵喵,猫呀哞哞哞,牛嘛汪汪汪。
场景二:
张三喂的时候:看下小动物多重了
李四喂的时候:看下小动物健康不,有几条腿
这该怎么办呢?访问者模式就解决了这个问题。
大概就是上图这样。把原来的2个类,抽象实现为5个类。不同的行为和反馈都在相应的类里实现。这样方便拓展维护,没有if else
以上