说明:表示一个作用于某对象结构中的各元素的操作,它使我们可以在不改变各元素的类的前提下定义作用于这些元素的新操作。
需求:不同事情(访问者),男女(元素)态度不一样
解决方式:
a. 定义一个元素抽象类,定义一个接收方法,传入形参访问者的抽象方法;
b. 分别定义元素实现A、B,实现其接收方法;(男女)
c. 定义一个访问者抽象类,定义访问A、B方法,分别传入元素A、元素B的抽象方法;
d. 分别定义抽象者实现类、2,实现其方法;(不同事情)
e. 定义一个对外的构造类,声明元素集合,定义新增、删除元素方法,定义一个接收方法,形参访问者,方法内遍历元素集合,执行元素的接收方法;
f. 客户端实例化构造类。
需求变更:新增一个结婚事情
解决方式:
新增访问者实现类3
类图: