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

9.1 模式介绍

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

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

9.2 实现要素

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

9.3 场景案例

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

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

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

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

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

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

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

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

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

相关推荐
特种加菲猫18 小时前
并发编程的守护者:信号量与日志策略模式解析
linux·笔记·策略模式
xiaowu0801 天前
策略模式-不同的鸭子的案例
开发语言·c#·策略模式
彭于晏Yan2 天前
Spring Boot中策略模式结合依赖注入的实现方式
spring boot·策略模式
宁静致远20212 天前
【C++设计模式】第二篇:策略模式(Strategy)--从基本介绍,内部原理、应用场景、使用方法,常见问题和解决方案进行深度解析
c++·设计模式·策略模式
Meteors.3 天前
23种设计模式——策略模式 (Strategy Pattern)详解
设计模式·策略模式
qq_435139573 天前
【1】策略模式 + 模板方法模式的联合应用
策略模式·模板方法模式
谢栋_4 天前
设计模式从入门到精通之(六)策略模式
设计模式·bash·策略模式
Nerd Nirvana4 天前
C++编程——异步处理、事件驱动编程和策略模式
开发语言·c++·策略模式·嵌入式开发·事件驱动·异步处理
成都被卷死的程序员5 天前
策略模式 + 工厂模式
策略模式
oioihoii8 天前
VS Code C#调试完全指南
开发语言·c#·策略模式