访问者模式Visitor Pattern

定义

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

适用场景

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

举例

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

优点

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

缺点

  1. 无法增加元素类型:若系统数据结构对象易于变化,经常有新的数据对象增加进来,则访问者类必须增加对应元素类型的操作,违背了开闭原则。
  2. 具体元素变更困难:具体元素增加属性,删除属性等操作会导致对应的访问者类需要进行对应的修改,尤其当有大量访问者类时,修改范围太大。
  3. 违背了依赖倒置原则,为了达到“区别对待”,访问者依赖的是具体元素类型,而不是抽象。
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
禁止转载,如需转载请通过简信或评论联系作者。