策略模式实践

模式简介

策略模式是一种行为型模式,它定义一系列的算法,将每一种算法封装起来并可以相互替换使用,策略模式让算法独立于使用它的客户端应用而独立变化。策略模式适合解决当程序出现多个不同分支,而且每个分支的逻辑还比较复杂的场景。

需求分析

在笔者参与的交易系统中,需要支持多种支付方式,如支付宝、微信、现金、银行卡等等,每一种支付方式的处理逻辑都不尽相同,对接的系统也不一样,所以程序中需要根据用户选择的支付方式来确定走哪一种支付方式的流程,根据需求描述就能看出,很适合用策略模式来解决这个问题,每一种支付方式就是一个策略,每个策略封装自己的支付逻辑。

详细设计

我们来看设计类图:

简单介绍一下逻辑:

  • PayHandler 的 pay 方法处理整体的支付逻辑
  • 首先构建 PayStrategyContext 上下文对象,构建完成后,上下文会包含支付单、支付明细、抹零模型、支付请求等对象
  • 上下文对象本身会作为参数传递后面的具体支付策略中,图中只列出了两个具体的策略,支付宝支付和微信支付
  • 支付策略 PayStrategy 接口包含两个方法,一个是用于完成支付动作的 pay 方法,另一个是用来匹配支付方式的 support 的方法

This chapter requires login to view full content. You are viewing a preview.

Login to View Full Content

Course Curriculum

3

框架与 I/O:Spring、Netty 与 Web 容器

理解 Spring Boot 自动装配、AOP 与事务原理,掌握 Netty Reactor 模型及 Tomcat 连接处理机制,构建高内聚、易扩展的应用服务层。
4

高性能中间件:消息、缓存与存储

熟练运用 MySQL 索引/事务、Redis 缓存策略、Kafka/RocketMQ 消息可靠性,以及 ZooKeeper 分布式协调,搭建稳定、解耦的分布式数据底座。
6

云原生:容器化、可观测性与工程效能

通过 Docker/K8s 实现弹性部署,集成 Metrics/Logs/Traces 构建可观测体系,推动 DevOps 与自动化,让架构在云上持续交付与进化。