访问者模式Visitor Pattern

定义

访问者模式(Visitor Pattern)是一种将数据结构与数据操作分离的设计模式。是指封装一些作用于某种数据结构中的各元素的操作。
特征:可以在不改变数据结构的前提下定义作用于这些元素的新的操作。
属于行为型模式。

适用场景

  1. 数据结构稳定,作用于数据结构的操作经常变化的场景。
  2. 需要数据结构与数据操作分离的场景。
  3. 需要对不同数据类型(元素)进行操作,而不使用分支判断具体类型的操作。

举例

  1. JDK FileVisitor,SimpleFileVisitor类
  2. Spring BeanDefinitionVisitor-visitBeanDefinition方法

优点

  1. 解耦了数据结构与数据操作,使得操作集合可以独立变化。
  2. 扩展性好:可以通过扩展访问者角色,实现对数据集的不同操作。
  3. 元素具体类型并非单一,访问者均可操作。
  4. 各角色职责分离,符合单一职责原则。

缺点

  1. 无法增加元素类型:若系统数据结构对象易于变化,经常有新的数据对象增加进来,则访问者类必须增加对应元素类型的操作,违背了开闭原则。
  2. 具体元素变更困难:具体元素增加属性,删除属性等操作会导致对应的访问者类需要进行对应的修改,尤其当有大量访问者类时,修改范围太大。
  3. 违背了依赖倒置原则,为了达到“区别对待”,访问者依赖的是具体元素类型,而不是抽象。

你可能感兴趣的:(访问者模式Visitor Pattern)