type
status
date
slug
summary
tags
category
icon
password
AI summary
一、定义

访问者模式:指将作用于某种数据结构中的各元素的操作分离出来封装成独立的类,使其在不改变数据结构的前提下可以添加作用于这些元素的新的操作。为数据结构中的每个元素提供多种访问方式。
二、示例:
模拟场景:
1、在本案例中我们模拟校园中的学⽣和⽼师对于不同⽤户的访问视⻆这个案例场景我们模拟校园中有学⽣和⽼师两种身份的⽤户,那么对于家⻓和校⻓关⼼的⻆度来看,他们的视⻆是不同的。
家⻓更关⼼孩⼦的成绩和⽼师的能⼒,
校⻓更关⼼⽼师所在班级学⽣的⼈数和升学率{ 此处模拟的 }。
访问者模式设计
教师和学生都继承此类,姓名,身份,班级等基础属性
学生:扩展ranking排名
老师:entranceRatio升学率
定义接口,学生和老师,分别对应不同的观察方式
家长观察学生和老师
校长观察学生和老师
数据看板:DataView
测试:
ApiTest
UML关系图

总结:
从以上的业务场景中可以看到,在嵌⼊访问者模式后,可以让整个⼯程结构变得容易添加和修改。也就做到了系统服务之间的解耦,不⾄于为了不同类型信息的访问⽽增加很多多余的 if 判断或者类的强制转换。也就是通过这样的设计模式⽽让代码结构更加清晰。
另外在实现的过程可能你可能也发现了,定义抽象类的时候还需要等待访问者接⼝的定义,这样的设计⾸先从实现上会让代码的组织变得有些难度。另外从设计模式原则的⻆度来看,违背了迪⽶特原则,也就是最少知道原则。因此在使⽤上⼀定要符合场景的运⽤,以及提取这部分设计思想的精髓。
- 作者:IT小舟
- 链接:https://www.codezhou.top/article/JAVA%E3%80%90%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F%E3%80%91%E8%AE%BF%E9%97%AE%E8%80%85%E6%A8%A1%E5%BC%8F
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。