004-行为型-09-访问者模式(Visitor)
一、概述 它分离对象的数据和行为,使用Visitor模式,可以不修改已有类的情况下,增加新的操作。 主要解决: 稳定的数据结构和易变的操作耦合问题。 注意事项: 访问者可以对功能进行统一,可以做报表、UI、拦截器与过滤器。 1.1、适用场景 1、对象结构中对象对应的类很少改变,但经常需要在此对象结构上定义新的操作。 2、需要对一个对象结构中的对象进行很多不同的并且不相关的操作,而需要避免让这些操作"污染"这些对象的类,也不希望在增加新操作时修改这些类。 1.2、优缺点 优点: 1、符合单一职责原则。 2、优秀的扩展性。 3、灵活性。 缺点: 1、具体元素对访问者公布细节,违反了迪米特原则。 2、具体元素变更比较困难。 3、违反了依赖倒置原则,依赖了具体类,没有依赖抽象。 1.3、类图角色及其职责 访问者模式的角色和职责 1、 访问者角色(Visitor): 为该对象结构中具体元素角色声明一个访问操作接口。该操作接口的名字和参数标识了发送访问请求给具体访问者的具体元素角色。这样访问者就可以通过该元素角色的特定接口直接访问它。 2、具体访问者角色(Concrete Visitor): 实现每个由访问者角色(Visitor)声明的操作。 3、元素角色(Element): 定义一个Accept操作,它以一个访问者为参数。 4