策略模式实践
模式简介
策略模式是一种行为型模式,它定义一系列的算法,将每一种算法封装起来并可以相互替换使用,策略模式让算法独立于使用它的客户端应用而独立变化。策略模式适合解决当程序出现多个不同分支,而且每个分支的逻辑还比较复杂的场景。
需求分析
在笔者参与的交易系统中,需要支持多种支付方式,如支付宝、微信、现金、银行卡等等,每一种支付方式的处理逻辑都不尽相同,对接的系统也不一样,所以程序中需要根据用户选择的支付方式来确定走哪一种支付方式的流程,根据需求描述就能看出,很适合用策略模式来解决这个问题,每一种支付方式就是一个策略,每个策略封装自己的支付逻辑。
详细设计
我们来看设计类图:

简单介绍一下逻辑:
- PayHandler 的 pay 方法处理整体的支付逻辑
- 首先构建 PayStrategyContext 上下文对象,构建完成后,上下文会包含支付单、支付明细、抹零模型、支付请求等对象
- 上下文对象本身会作为参数传递后面的具体支付策略中,图中只列出了两个具体的策略,支付宝支付和微信支付
- 支付策略 PayStrategy 接口包含两个方法,一个是用于完成支付动作的 pay 方法,另一个是用来匹配支付方式的 support 的方法
This chapter requires login to view full content. You are viewing a preview.
Login to View Full Content