访问者模式:
表示一个作用于某对象结构中的各元素的操作。它使你在不改变各元素的类的前提下定义作用于这些元素的新操作。
理解:
在这个对象结构中只有男人和女人,将Action抽象类作用于这两个元素,而Action里可以增加、删除任何操作,比如成功、失败、恋爱,而这些作用之间是没有影响的,符合开-闭原则,这样就将数据结构和作用于结构上的操作之间的耦合解脱开了这种模式适用于数据结构相对稳定的系统,比如世界上只有男人和女人,这就是一个稳定因素。
访问者模式结构图:
visitor:抽象访问者
ConcreteVisitor:具体访问者
Element:抽象元素
ConcreteElement:具体元素
ObjectStructure:对象结构
模式优点:
1、增加新的访问操作方便
2、将有关元素对象的访问行为集中到一个访问者对象中,而不是分散在一个个元素类中,类的职责更加清晰
3、让用户能够在不修改现有元素类层次结构的情况下,定义作用于该层次结构的操作
适用性:
一个对象结构包含多个类型的对象,希望对这些对象实施一些依赖其具体类型的操作
需要对一个对象结构中的对象进行很多不同的且不相关的操作,并需要避免让这些操作“污染”这些对象的类,也不希望在增加新操作时修改这些类
对象结构中对象对应的类很少改变,但经常需要在此对象结构上定义新的操作,比如世界上只有男人和女人,但是男人和女人对于不同的事情会有不同的反应。