策略模式应用场景_策略模式在支付系统的使用

bf6b96f2e7de1293798d7d601d3d9ab8.png

策略模式

策略模式作为一种软件设计模式,指对象有某个行为,但是在不同的场景中,该行为有不同的实现算法。比如每个人都要“交个人所得税”,但是“在美国交个人所得税”和“在中国交个人所得税”就有不同的算税方法。

  1. 定义了一组算法(业务规则);
  2. 封装了每个算法;
  3. 这组的算法可互换代替(interchangeable)。

优点

  1. 算法可以自由切换
  2. 避免使用多重条件判断
  3. 扩展性良好

缺点:

  1. 策略类会增多
  2. 所有策略类都需要对外暴露

应用场景

1、 多个类只区别在表现行为不同,可以使用Strategy模式,在运行时动态选择具体要执行的行为。

2、 需要在不同情况下使用不同的策略(算法),或者策略还可能在未来用其它方式来实现。

3、 对客户隐藏具体策略(算法)的实现细节,彼此完全独立

策略模式在支付系统的使用

77a014a042bc5179867089971d177f08.png

PayStrategy

public interface PayStrategy {   public void pay(Object obj);}

微信支付

public class WechatPayStrategy implements PayStrategy{   @Override   public void pay(Object obj) {      System.out.println("do wechat pay");   }}

支付宝支付

public class AliPayStrategy implements PayStrategy{   @Override   public void pay(Object obj) {      System.out.println("do alipay");   }}

context

public class Context {   private PayStrategy payStrategy;    public Context(PayStrategy payStrategy){      this.payStrategy = payStrategy;   }    public void executeStrategy(Object obj){      return strategy.pay(obj);   }}

StrategyPatternDemo

public class StrategyPatternDemo {   public static void main(String[] args) {      Object wechatPayObj = new Object();      Context context = new Context(new WechatPayStrategy());          context.executeStrategy(wechatPayObj);       Object aliPayObj = new Object();      context = new Context(new AliPayStrategy());            context.executeStrategy(aliPayObj);    }}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值