策略模式

策略模式(Strategy Pattern)在Java中也是非常常见的一种设计模式,下面给出一个简单的案例来说明如何使用策略模式:

假设有一个电商平台,根据不同的支付方式计算订单的支付金额。我们可以使用策略模式来实现不同的支付策略,方便根据实际需求灵活地添加、修改和选择支付方式。

首先,定义一个支付策略接口:

public interface PaymentStrategy {
    void pay(double amount);
}

然后,定义几种具体的支付策略:

public class CreditCardPayment implements PaymentStrategy {
    @Override
    public void pay(double amount) {
        System.out.println("通过信用卡支付:" + amount + "元");
    }
}

public class WeChatPayment implements PaymentStrategy {
    @Override
    public void pay(double amount) {
        System.out.println("通过微信支付:" + amount + "元");
    }
}

public class AlipayPayment implements PaymentStrategy {
    @Override
    public void pay(double amount) {
        System.out.println("通过支付宝支付:" + amount + "元");
    }
}

接下来,我们可以编写一个订单类,其中包含了支付策略:

public class Order {
    private double amount;
    private PaymentStrategy paymentStrategy;

    public Order(double amount, PaymentStrategy paymentStrategy) {
        this.amount = amount;
        this.paymentStrategy = paymentStrategy;
    }

    public void processPayment() {
        paymentStrategy.pay(amount);
    }
}

最后,我们可以测试一下:

public class Main {
    public static void main(String[] args) {
        double amount = 100.0;
        
        // 创建不同的支付策略
        PaymentStrategy creditCardPayment = new CreditCardPayment();
        PaymentStrategy weChatPayment = new WeChatPayment();
        PaymentStrategy alipayPayment = new AlipayPayment();

        // 创建订单,并选择相应的支付策略进行支付
        Order order1 = new Order(amount, creditCardPayment);
        order1.processPayment();

        Order order2 = new Order(amount, weChatPayment);
        order2.processPayment();

        Order order3 = new Order(amount, alipayPayment);
        order3.processPayment();
    }
}

以上代码实现了一个简单的策略模式。根据订单的支付方式选择相应的支付策略,通过调用pay方法来完成支付操作。策略模式使得支付策略与订单类解耦,方便扩展和维护。

在实际应用中,我们可以根据需要添加更多的支付方式,只需要实现PaymentStrategy接口并提供相应的支付逻辑即可,而不需要修改原有的订单类代码。这样,我们可以根据实际需求动态地选择不同的支付策略,使得系统更加灵活和可扩展。

posted @ 2023-08-11 00:09  博客-涛  阅读(12)  评论(0编辑  收藏  举报