1.需求:因为付款功能集成的第三方支付SDK越来越来多不好维护,改用策略模式实现,来代替代码中多余的if else 判断。
2.什么是策略模式?
策略模式(Strategy Pattern)是一种行为型设计模式,它允许在运行时选择算法的行为。该模式将不同的算法封装成独立的策略类,并使这些策略类可以互相替换,从而使得算法可以独立于客户端代码进行变化。
在策略模式中,有三个核心角色:
2.1.环境(Context):环境对象持有一个对抽象策略类的引用,并通过调用其方法来执行具体的算法。
2.2.抽象策略(Strategy):抽象策略定义了一个公共接口或抽象类,所有具体策略都必须实现该接口或继承该抽象类。
2.3.具体策略(Concrete Strategy):具体策略是实现了抽象策略定义的接口或继承了抽象类的具体实现。
3.策略模式的UML图示:
4.代码示例:
Pay代码示例如下:
/**
* 策略接口
*/
public interface Pay {
void pay();
}
WeChatPay 代码示例如下:
import com.design.design_demo.strategy.Pay;
import o