写在前面:设计模式源于生活,而又高于生活!
为什么要使用设计模式重构代码
使用设计模式可以重构整体架构代码、提高代码复用性、扩展性、减少代码冗余问题。
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.RELEASE
org.springframework.boot
spring-boot-starter-web
org.projectlombok
lombok
1.16.10
commons-lang
commons-lang
2.6
org.mybatis.spring.boot
mybatis-spring-boot-starter
1.1.1
mysql
mysql-connector-java
PayStrategy(抽象角色)
/**
* @title: PayStrategy 共同算法定义的骨架
*/
public interface PayStrategy {
/**
* 策略