设计模式深入浅出--24.访问者模式简单实例及其在JDK、Spring中的应用

访问者模式

定义:

封装作用于某数据结构(如List/Set/Map等)中的各元素的操作

可以在不改变各元素的类的前提下,定义作用于这些元素的操作

类型:行为型

适用场景:

一个数据结构如(List.Set/Map等)包含很多类型对象

数据结构与数据操作分离

优点:

增加新的操作很容易,即增加一个新的访问者

缺点:

增加新的数据结构困难

具体元素变更比较麻烦

相关设计模式:

访问者模式和迭代器模式

Coding:

创建Course类

创建FreeCourse类继承Course

 

创建CodingCourse类继承Course

 

创建IVisitor接口

 

创建Visitor类实现IVisitor接口

访问者模式的核心:就是通过不同的visitor来对相同的数据进行不同的处理。

 

查看当前UML类图

 

创建Test类

  

 运行结果

 流程总结:在course.accept()中,传入的Visitor类其实都是一样的,主要是对于course它本身的一个判断this判断,然后在通过visit()方法来进行判断

 

JDK中的应用:

类FileVisitor

 

类SimpleFileVisitor

 

 在Spring中的应用

 类BeanDefinitionVisitor

 它的具体实现都交给了valueResolver来实现

 

方法visitBeanDefinition实现了不同的visit来对相同的数据进行不同的处理

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值