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

9.1 模式介绍

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

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

9.2 实现要素

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

9.3 场景案例

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

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

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

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

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

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

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

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

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

相关推荐
「QT(C++)开发工程师」2 天前
C++ 策略模式
开发语言·c++·策略模式
佑白雪乐2 天前
<Linux基础12集>1-11集大复习Review
linux·运维·策略模式
临水逸4 天前
OpenClaw WebUI 的外网访问配置
人工智能·策略模式
她说..4 天前
策略模式+工厂模式实现订单校验功能
java·spring boot·java-ee·简单工厂模式·策略模式
短剑重铸之日4 天前
《设计模式》第五篇:策略模式
java·后端·设计模式·策略模式
帅得不敢出门4 天前
Android定位RK编译的system.img比MTK大350M的原因
android·framework·策略模式
琹箐4 天前
设计模式——策略模式
设计模式·策略模式
她说..5 天前
策略模式+工厂模式实现审批流(面试问答版)
java·后端·spring·面试·springboot·策略模式·javaee
进击的小头6 天前
设计模式组合应用:嵌入式通信协议栈
c语言·设计模式·策略模式
Wyy_9527*6 天前
行为型设计模式——策略模式
设计模式·策略模式