-
特点:从数据的角度出发,可以分为数据的存储和处理,存储一般指不同的数据的载体以不同结构形式对数据的管理,处理则是以数据元素为中心的算法。
通常编写程序的时候,数据的存储和处理耦合度非常高,不便于管理和扩展。Visitor模式就是为了解决这个问题,将数据的存储和处理分开管理,而存储和处理之间各有一个类似钩子一样的东西,互相关联起来。
通常使用这种模式都是有着比较复杂的数据结构,且有着一定的一致性。如果只是简单的数据结构,里面存储者某种基本(int、String等单一结构)类型元素,再加上这种模式的话只会提高程序的复杂度,没有任何收益。
开闭原则:对扩展开放,对修改关闭。
- 角色:
角色名称 | 角色职责 |
---|---|
Visitor(访问者) | 定义访问数据元素相关API |
ConcreteVisitor(具体访问者) | 继承Visitor实现相关API算法 |
Element(元素) | 定义元素受访相关API |
ConcreteElement(具体元素) | 继承Element实现相关API算法 |
ObjectStructure(对象结构) | 负责处理Element的集合 |
-
角色关系:
Visitor.png 代码示例:Visitor
以上文献参考:《图解设计模式》