访问者模式

访问者模式(Visitor Pattern):提供一个作用于某对象结构中的各元素的操作表示,它使我们可以在不改变各元素的类的前提下定义作用于这些元素的新操作。

封装用于某数据结构(List、Set、Map)中各种元素的操作,核心是封装操作

适用场景

  • 当一个数据结构如(List、Set、Map)包含很多类型对象。

  • 数据结构与数据操作分离

优点

  • 增加新的操作很容易,新增一个访问者就可以

缺点

  • 增加新的数据结构困难

  • 具体元素变更比较麻烦

下面我们引入一个应用场景。在很多视频网站上,会有很多的免费视频,以及付费视频。用户去视频网站浏览的时候,就是一个个访问者。接下来我们通过代码来模拟一下这个业务逻辑。

注意: 在实际工作中,并不一定常用访问者模式。一单要使用访问者模式,就说明,这个应用场景必须要使用访问者模式来解决问题,或者说使用访问者模式能让问题解决地更优雅。

Golang Demo

Java Demo

定义一个访问者的接口

定义视频的抽象类

定义了visitor,visitor会根据传入的视频类别来进行访问。

UML

访问者模式UML

补充另一个版本的Java/Scala Demo 以及源码解析

Java Demo_

Scala Demo

UML_

源码解析

Last updated