把数据结构和操作分离开,使得操作可以自由演化。该模式用于数据结构相对稳定的系统。
也就是说,把操作封装成一个个类,每个操作类都要定义好对每种数据结构的操作。
举个栗子,假设当前有数据结构 A 和 B,操作 1 和操作 2 :
1.创建访问者抽象类 Visitor,定义对数据结构 A, B 的操作方法 HandleA(), HandleB() 。
2.创建具体访问者类 ConcreteVisitor1, ConcreteVisitor2,实现具体方法。
3.创建数据抽象类 Element。定义一个 Accept 方法,该方法接受一个 Visitor 类型的参数 v。
4.创建具体数据类 ConcreteElementA, ConcreteElementB。
4.1ConcreteElementA 中 ,Accept 调用 v 的 HandleA();
4.2ConcreteElementB 中 ,Accept 调用 v 的 HandleB();