需求:需求就是我一个系统既可以开通工商银行虚拟卡,也可以开通建设银行的虚拟卡,开通之后将开卡数据存储到数据库。
设计:
- 定义一个开卡接口OpenCardInterface,接口里面三个方法,一个开卡方法、一个保存开卡数据方法,一个枚举类表示是开招商银行还是开建设银行。
- 一个抽象类AbstractOpenCardInterfaceImpl,由于保存开卡数据的方法是公用的,因此公用方法写到抽象类。
- 一个招商银行开卡实现,GsBankOpenCardInterfaceImpl,一个建设银行开卡实现JsBankOpenCardInterfaceImpl。
下面接口实现:
step1:定义开卡接口OpenCardInterface
step2:定义开卡抽象类AbstractOpenCardInterfaceImpl
step3:定义工商银行开卡实现类
step4:定义建设银行开卡实现类
step5:定义开卡银行枚举类
step5:定义controller,调用接口来完成不同的开卡请求,打到不同银行开卡实现类里面
注意:点睛之笔就是每个实现类里面都返回了对应的枚举值,这样就可以直接在controller里面注入List<接口>,利用枚举值来判断,将不同的开卡类型的请求分别转发到不同的实现类里面。
源代码已经上传到了码云:https://gitee.com/vancl/has_mybatis-plus_java8_demo.git