深入解析:java设计模式 -【策略模式】

策略模式定义

策略模式(Strategy Pattern)是一种行为设计模式,允许在运行时选择算法的行为。它将算法封装成独立的类,使得它们可以相互替换,而不影响客户端代码。

核心组成

Context(上下文):持有一个策略对象的引用,负责调用策略的具体实现。
Strategy(策略接口):定义所有支持的算法或行为的公共接口。
ConcreteStrategy(具体策略):实现策略接口的具体算法或行为。

搭建示例(Java代码)

// 策略接口 
interface PaymentStrategy {
void pay(int amount);
}
// 具体策略:信用卡支付 
class CreditCardPayment
implements PaymentStrategy {
private String cardNumber;
public CreditCardPayment(String cardNumber) {
this.cardNumber = cardNumber;
}
@Override
public void pay(int amount) {
System.out.println("Paid " + amount + " via Credit Card: " + cardNumber);
}
}
// 具体策略:支付宝支付 
class AlipayPayment
implements PaymentStrategy {
private String account;
public AlipayPayment(String account) {
this.account = account;
}
@Override
public void pay(int amount) {
System.out.println("Paid " + amount + " via Alipay: " + account);
}
}
// 上下文类 
class ShoppingCart
{
private PaymentStrategy paymentStrategy;
public void setPaymentStrategy(PaymentStrategy strategy) {
this.paymentStrategy = strategy;
}
public void checkout(int amount) {
paymentStrategy.pay(amount);
}
}
// 客户端代码 
public class Main
{
public static void main(String[] args) {
ShoppingCart cart = new ShoppingCart();
cart.setPaymentStrategy(new CreditCardPayment("1234-5678-9012"));
cart.checkout(100);
cart.setPaymentStrategy(new AlipayPayment("user@example.com"));
cart.checkout(200);
}
}

适用场景

需要动态切换算法或行为时(如支付方式、排序算法)。
避免多重条件判断(如大量的 if-else 或 switch 语句)。
需要隔离算法逻辑与客户端代码。

posted on 2025-08-05 22:56  ljbguanli  阅读(6)  评论(0)    收藏  举报