9.1 模式介绍
策略模式是一种行为型设计模式,用于在运行时灵活切换对象的行为或算法,它将算法封装为独立的类,使得它们可以互相替换,而不会影响使用这些算法的客户端代码。
策略模式的核心思想是:定义一系列可互换的算法或行为,将其独立于使用它们的上下文,并在运行时动态选择或切换策略。
9.2 实现要素
策略模式实现3要素包括:抽象策略接口 (所有策略类必须实现的公共接口)、具体策略实现类 (实现了抽象策略接口,封装了不同的算法或行为,每个实现类表示一种策略)、上下文类(持有策略接口的引用,负责调用具体策略的行为)。
9.3 场景案例
策略模式可以用"支付系统"来说明,比如一个电商平台支持多种支付方式(如信用卡、支付宝、微信支付等)。用户在支付时,可以根据自己的需求选择不同的支付方式,支付逻辑完全由具体的支付策略负责。
抽象策略接口:
PaymentStrategy
表示支付策略接口,定义了所有支付方式必须实现的方法pay(amount)
,这是整个支付系统的行为标准,确保每种支付方式都能被上下文调用。具体策略实现类: 每种支付方式(信用卡支付、支付宝支付、微信支付)作为独立的类实现了
PaymentStrategy
接口,分别封装了其特定的支付逻辑。
CreditCardPayment
:实现信用卡支付逻辑。
AliPayPayment
:实现支付宝支付逻辑。
WeChatPayPayment
:实现微信支付逻辑。上下文类: 上下文类
PaymentContext
持有PaymentStrategy
的引用,负责调用具体的支付逻辑,它提供了设置支付策略的方法setStrategy(strategy)
,可以在运行时动态切换支付方式。客户端通过调用上下文类(
PaymentContext
)与具体支付策略实现类(如CreditCardPayment
、AliPayPayment
、WeChatPayPayment
)交互,且上下文类支持动态切换支付策略。每种策略封装了具体的支付逻辑,简化了支付过程,避免了客户端代码中的复杂条件判断或硬编码。
★ 为进一步加深对该模式的理解,你可以使用策略模式实现一个计算器,加减乘除、一网打尽!