策略模式(代码简单介绍)

当涉及到用代码解释策略模式时,我们可以使用一个简单的示例来说明。假设我们有一个电商系统,根据不同的支付方式计算订单的总金额。这里,我们可以使用策略模式来处理不同的支付策略。

首先,我们定义一个支付策略接口(PaymentStrategy):

public interface PaymentStrategy {
    double calculateTotalAmount(double orderAmount);
}

然后,我们实现具体的支付策略,比如信用卡支付(CreditCardPaymentStrategy)和支付宝支付(AlipayPaymentStrategy):

public class CreditCardPaymentStrategy implements PaymentStrategy {
    @Override
    public double calculateTotalAmount(double orderAmount) {
        // 在这里实现信用卡支付的金额计算逻辑
        // 假设信用卡支付需要额外收取2%的手续费
        return orderAmount * 1.02;
    }
}

public class AlipayPaymentStrategy implements PaymentStrategy {
    @Override
    public double calculateTotalAmount(double orderAmount) {
        // 在这里实现支付宝支付的金额计算逻辑
        // 假设支付宝支付不需要额外手续费
        return orderAmount;
    }
}

接下来,我们创建一个订单类(Order),它包含了订单金额和所选的支付策略:

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

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

    public double calculateTotalAmount() {
        return paymentStrategy.calculateTotalAmount(orderAmount);
    }
}

现在,我们可以使用策略模式来计算订单的总金额:

public class Main {
    public static void main(String[] args) {
        double orderAmount = 100.0;

        // 创建订单,并选择信用卡支付策略
        PaymentStrategy creditCardStrategy = new CreditCardPaymentStrategy();
        Order orderWithCreditCard = new Order(orderAmount, creditCardStrategy);
        double totalAmountWithCreditCard = orderWithCreditCard.calculateTotalAmount();
        System.out.println("Total amount with credit card: " + totalAmountWithCreditCard);

        // 创建订单,并选择支付宝支付策略
        PaymentStrategy alipayStrategy = new AlipayPaymentStrategy();
        Order orderWithAlipay = new Order(orderAmount, alipayStrategy);
        double totalAmountWithAlipay = orderWithAlipay.calculateTotalAmount();
        System.out.println("Total amount with Alipay: " + totalAmountWithAlipay);
    }
}

在这个示例中,我们定义了支付策略接口(PaymentStrategy),并实现了不同的支付策略(CreditCardPaymentStrategyAlipayPaymentStrategy)。然后,我们通过创建订单对象,并选择不同的支付策略来计算订单的总金额。

通过使用策略模式,我们可以轻松地添加新的支付策略,并且订单类(Order)不需要关心具体的支付实现细节。这样,我们可以根据不同的情况动态地选择和切换支付策略,而无需修改订单类的代码。

总结一下,以上代码示例展示了策略模式的应用。它通过将不同的支付策略封装在各自的策略类中,使得可以在运行时选择不同的策略来计算订单的总金额。这种灵活性和可扩展性使得系统能够轻松应对不同的支付需求和变化。

请注意,以上示例是一个简化的示例,仅用于说明策略模式的基本概念和用法。在实际的应用中,可能需要考虑更多的因素,如支付的安全性、订单的处理逻辑等。根据具体的业务需求,可以进一步扩展和优化代码。

posted @ 2023-05-17 16:04  yifanglai  阅读(138)  评论(0)    收藏  举报