设计模式之策略模式

策略模式(Strategy Pattern)是一种行为设计模式,它定义了一系列算法,将每个算法封装起来,并使它们可以互相替换。这样客户端在使用算法时可以独立于具体的算法实现,而是通过指定不同的策略来达到不同的行为。

 

在策略模式中,主要有以下几个角色:

 

1. Context(上下文):定义了一个接口,用于在运行时设置和切换不同的策略。

 

2. Strategy(策略):定义了所有支持的算法的公共接口。

 

3. ConcreteStrategy(具体策略):实现了具体的算法。

 

下面是一个简单的Java示例,演示策略模式的实现:

 

 

// 策略接口

interface PaymentStrategy {

    void pay(int amount);

}

 

// 具体策略类:支付方式A

class CreditCardPayment implements PaymentStrategy {

    @Override

    public void pay(int amount) {

        System.out.println("Paid " + amount + " using Credit Card");

    }

}

 

// 具体策略类:支付方式B

class PayPalPayment implements PaymentStrategy {

    @Override

    public void pay(int amount) {

        System.out.println("Paid " + amount + " using PayPal");

    }

}

 

// 上下文类

class ShoppingCart {

    private PaymentStrategy paymentStrategy;

 

    public void setPaymentStrategy(PaymentStrategy paymentStrategy) {

        this.paymentStrategy = paymentStrategy;

    }

 

    public void checkout(int amount) {

        paymentStrategy.pay(amount);

    }

}

 

public class StrategyPatternExample {

    public static void main(String[] args) {

        ShoppingCart cart = new ShoppingCart();

 

        // 使用Credit Card支付

        cart.setPaymentStrategy(new CreditCardPayment());

        cart.checkout(100);

 

        // 使用PayPal支付

        cart.setPaymentStrategy(new PayPalPayment());

        cart.checkout(200);

    }

}

 

 

在这个例子中,策略模式通过定义支付策略接口(`PaymentStrategy`)和具体支付策略类(`CreditCardPayment`和`PayPalPayment`)来实现不同的支付方式。`ShoppingCart`类作为上下文类,可以设置不同的支付策略,并在`checkout()`方法中调用相应的支付方法。通过策略模式,客户端可以根据需要动态切换支付方式,而不需要改变整个购物车类的逻辑,从而提高了代码的灵活性和可维护性。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值