设计模式之策略模式实战案例,如何重构聚合支付平台,对接支付宝、微信、银联支付?
写在前面:设计模式源于生活,而又高于生活!
为什么要使用设计模式重构代码
使用设计模式可以重构整体架构代码、提高代码复用性、扩展性、减少代码冗余问题。Java高级工程师装逼的技能!
什么是策略模式
策略模式是对算法的包装,是把使用算法的责任和算法本身分割开来,委派给不同的对象管理,最终可以实现解决多重if判断问题。
1.环境(Context)角色:持有一个Strategy的引用2.抽象策略(Strategy)角色:这是一个抽象角色,通常由一个接口或抽象类实现。此角色给出所有的具体策略类所需的接口。3.具体策略(ContextStrategy)角色:包装了相关的算法或行为。
策略模式应用场景
比如搭建聚合支付平台的时候,这时候需要对接很多第三方支付接口,比如支付宝、微信支付、银联支付等。通过传统if代码判断的,后期的维护性非常差!
public String toPayHtml2(String payCode){ if(payCode.equals("ali_pay")){ return "调用支付宝接口..."; } if(payCode.equals("union_pay")){ return "调用银联支付接口"; } if(payCode.equals("weChat_pay")){ return "调用微信支付接口..."; } return "未找到该接口...";}
这时候可以通过策略模式解决多重if判断问题。
策略模式架构图
策略模式环境搭建
Maven依赖信息
org.springframework.boot spring-boot-starter-parent 2.0.1.RELEASEorg.springframework.boot spring-boot-starter-web org.projectlombok lombok 1.16.10commons-lang commons-lang 2.6org.mybatis.spring.boot mybatis-spring-boot-starter 1.1.1mysql mysql-connector-java
PayStrategy(抽象角色)