9. 一分钟读懂“策略模式”

9.1 模式介绍

策略模式是一种行为型设计模式,用于在运行时灵活切换对象的行为或算法,它将算法封装为独立的类,使得它们可以互相替换,而不会影响使用这些算法的客户端代码。

策略模式的核心思想是:定义一系列可互换的算法或行为,将其独立于使用它们的上下文,并在运行时动态选择或切换策略

9.2 实现要素

策略模式实现3要素包括:抽象策略接口 (所有策略类必须实现的公共接口)、具体策略实现类 (实现了抽象策略接口,封装了不同的算法或行为,每个实现类表示一种策略)、上下文类(持有策略接口的引用,负责调用具体策略的行为)。

9.3 场景案例

策略模式可以用"支付系统"来说明,比如一个电商平台支持多种支付方式(如信用卡、支付宝、微信支付等)。用户在支付时,可以根据自己的需求选择不同的支付方式,支付逻辑完全由具体的支付策略负责。

  • 抽象策略接口: PaymentStrategy 表示支付策略接口,定义了所有支付方式必须实现的方法pay(amount),这是整个支付系统的行为标准,确保每种支付方式都能被上下文调用。

  • 具体策略实现类: 每种支付方式(信用卡支付、支付宝支付、微信支付)作为独立的类实现了 PaymentStrategy 接口,分别封装了其特定的支付逻辑。

    • CreditCardPayment:实现信用卡支付逻辑。

    • AliPayPayment:实现支付宝支付逻辑。

    • WeChatPayPayment:实现微信支付逻辑。

  • 上下文类: 上下文类 PaymentContext 持有 PaymentStrategy 的引用,负责调用具体的支付逻辑,它提供了设置支付策略的方法setStrategy(strategy),可以在运行时动态切换支付方式。

客户端通过调用上下文类(PaymentContext)与具体支付策略实现类(如 CreditCardPaymentAliPayPaymentWeChatPayPayment)交互,且上下文类支持动态切换支付策略。每种策略封装了具体的支付逻辑,简化了支付过程,避免了客户端代码中的复杂条件判断或硬编码。

★ 为进一步加深对该模式的理解,你可以使用策略模式实现一个计算器,加减乘除、一网打尽!

相关推荐
朗迹 - 张伟1 天前
用AI开发QT——Qt与Trae开发环境搭建
开发语言·qt·策略模式
A懿轩A1 天前
Ghostty:告别 Mac 毛坯终端,打造 2026 最丝滑的 Ghostty AI 开发驾驶舱——Claude Code 团队也在用
python·macos·策略模式
二哈赛车手2 天前
新人笔记---多策略搭建策略执行链实现RAG检索后过滤
java·笔记·spring·设计模式·ai·策略模式
geovindu3 天前
go: Strategy Pattern
开发语言·设计模式·golang·策略模式
jimy13 天前
一个夜间期权交易策略的评价
策略模式·程序员创富
harder3216 天前
RMP模式的创新突破
开发语言·学习·ios·swift·策略模式
ximu_polaris6 天前
设计模式(C++)-行为型模式-策略模式
c++·设计模式·策略模式
原来是猿8 天前
线程安全的单例模式
linux·服务器·开发语言·单例模式·策略模式
Mr_linjw9 天前
策略模式简介
策略模式
故乡de云9 天前
Cursor + Claude Code 接入 API 实战:国内稳定使用 Claude 4.7 配置全攻略
大模型·ai编程·策略模式·claude·cursor·claude code