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

9.1 模式介绍

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

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

9.2 实现要素

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

9.3 场景案例

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

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

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

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

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

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

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

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

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

相关推荐
黑不溜秋的5 小时前
C++ 设计模式 - 策略模式
c++·设计模式·策略模式
ox00802 天前
C++ 设计模式-策略模式
c++·设计模式·策略模式
Hadesls4 天前
MacOS 15.3 卸载系统内置软件
macos·策略模式
Tang Paofan10 天前
【C++】策略模式
开发语言·c++·策略模式
bug的abc11 天前
策略模式-小结
策略模式
谢道韫66611 天前
从0到1:ArkTS实现鸿蒙策略模式全解析
华为·harmonyos·策略模式
geekmice12 天前
问题:通过策略模式+工厂模式+模板方法模式实现ifelse优化
策略模式·模板方法模式
添砖Java中12 天前
深度解析策略模式:从理论到企业级实战应用
spring boot·spring·spring cloud·设计模式·maven·策略模式
weixin_4383354012 天前
设计模式之策略模式
设计模式·策略模式
大雄野比12 天前
Python 实现 macOS 系统代理的设置
python·macos·策略模式