在访问者模式(Visitor Pattern)中,我们使用了一个访问者类,它改变了元素类的执行算法。通过这种方式,元素的执行算法可以随着访问者改变而改变。这种类型的设计模式属于行为型模式。根据模式,元素对象已接受访问者对象,这样访问者对象就可以处理元素对象上的操作。
主要将数据结构与数据操作分离。稳定的数据结构和易变的操作耦合问题。
结构图
角色与理解
- 访问者模式共分为五种角色:
- Visitor (抽象访问者):内部声明一个对每一个具体元素进行访问的操作。
- Concrete Visitor (具体访问者):继承抽象访问者,实现对所有具体元素的一种访问操作。
- Element (抽象元素):声明accept()方法,以抽象访问者作为参数,供访问者访问。
- Concrete Element (具体元素):实现accept()方法,调用访问者的访问方法以完成访问者对自身的访问。
- Object Structure (对象结构):存储并管理元素,提供一个入口,使所有元素被访问。
- 被访问者提供访问入口,使自身的数据被访问者访问。
核心代码