访问者模式:Visitor Pattern、行为型模式
访问者模式将数据结构与数据操作分离的设计模式,是指封装一些作用于某种数据结构中的各元素的操作,在不改变数据结构的前提下定义作用于这些元素的新的操作。
访问者模式核心在于 解耦数据结构与数据操作
访问者模式应用场景
1、数据结构稳定,作用于数据结构的操作经常变化的场景
2、需要数据结构与数据操作分离的场景
3、需要对不同的数据类型进行操作,而不使用分支判断具体类型场景。
访问者模式的优缺点
优点:
1、解耦数据结构与数据操作,使得操作集合可以独立变化
2、扩展性好,可以通过扩展访问者角色,实现对数据集的不同操作
3、各个角色各司其职,符合单一职责原则。
缺点:
1、无法增加元素类型,若系统数据结构对象易于变化,有新的数据对象增加进来,访问者增加对应元素操作,违背开闭原则
2、具体元素变更困难,具体元素增加属性,删除属性等操作会导致对应访问者类需要进行修改,如有大量访问者者时,修改范围太大。
访问者模式源码应用
1、JDK NIO FileVisitor
2、Spring IoC BeanDefinitionVisitor