接口动态调用
这几天在写数据插入脚本中学习到了一种接口动态调用的实现方法,当多个接口的功能一致,只是在不同场景下功能体现不同的实现方式时非常实用,能够避免繁琐的控制类管理,统一的控制类,访问路径不同会自动分发请求到不同的逻辑实现中处理,这里简单的总结了一下其实现方式,当然还是以demo的形式来体现了哈。
这里首先需要建立一个spring项目,大家应该已经得心应手便不再赘述
首先定义一个父类接口,这里用Car类举例,在这里Car表示汽车的整个抽象
1 | public interface Car { |
接下来我们使用三个组件类去继承Car,分别是SportCar、Truck、Limousine这三个简单的类我们可以理解为汽车类下的三个子种类,为跑车、卡车、豪华轿车,虽然同为汽车,但是它们却有不同的实现方式,我们使用@Component注释,把这些类实例化到spring容器中
1 |
|
1 |
|
1 |
|
接下来就是比较重要的部分了,首先我们先定义一个接口,CarContext,其定义了一个取得Car实现类的方法,当然我们根据不同的标识会得到不同的Car接口实现,标识便是这里的dataType
1 | public interface CarContext { |
接着我们定义一个请求分发的逻辑实现类,由于逻辑比较多,所以我将原理以注释的形式写在代码里面,这样更加直观一点
1 | import org.springframework.beans.BeansException; |
接下来就是简单地控制类了,在这里三个不同的服务实现只用到了一个控制类,通过不同的dataType可以得到不同的功能实现
1 | import com.cdw.my.example.demoOne.service.CarContext; |