概念
访问者模式有点复杂。一般不轻易使用。他的主要任务是通过不同的访问器,访问问相同的对象,得到不同的信息
生成不同的报表等。
实现
类图
代码
- Coputer被访问者
1 | /** |
- ComputerPart 被访问者,被访问的部分
1 |
|
- ComputerPartVisitor 访问者
1 | public interface ComputerPartVisitor { |
- Keyboard ,Screen 具体的电脑访问部分对象
1 | public class Keyboard implements ComputerPart { |
- 访问接口 Visitor
1 | public interface Visitor { |
- Client客户端调用方式
1 | public class Client { |
- 执行结果
1 | Connected to the target VM, address: '127.0.0.1:51341', transport: 'socket' |
场景
访问者模式一般用于当对象属性或者信息太多,太杂的时候,通过不同的访问器(观察角度),访问不同的信息。
并且可以对信息进行二次加工。具体场景如:
1:员工的绩效评估,工程师和HR评估的角度不同。访问角度不同,这时候
访问者模式就比较适合。
2:报表,老板看到的报表和团队看到的项目报表肯定不一样。这时就满足访问者模式场景。
总结
总的来讲,访问者模式提供多角度对同个对象的观测方式。对其理解不深很深刻,总结可能不到位,以后再总结。