欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

实战讲解:Java策略模式-第三部分:代码实现

最编程 2024-01-26 18:35:04
...

下面通过一个简单的例子来演示策略模式的实现。假设有一个支付系统,我们可以使用策略模式来实现不同支付方式的选择。

抽象策略 - 支付策略 PaymentStrategy

package com.cheney.demo;

interface PaymentStrategy {
    void pay(int amount);
}

具体策略 - 支付宝支付 AlipayStrategy

package com.cheney.demo;

class AlipayStrategy implements PaymentStrategy {
    @Override
    public void pay(int amount) {
        System.out.println("使用支付宝支付 " + amount);
    }
}

具体策略 - 微信支付 WeChatPayStrategy

package com.cheney.demo;

class WeChatPayStrategy implements PaymentStrategy {
    @Override
    public void pay(int amount) {
        System.out.println("使用微信支付 " + amount);
    }
}

具体策略 - 银行卡支付 CardPaymentStrategy

package com.cheney.demo;

class CardPaymentStrategy implements PaymentStrategy {
    @Override
    public void pay(int amount) {
        System.out.println("使用银行卡支付 " + amount);
    }
}

环境 - 支付上下文 PaymentContext

package com.cheney.demo;

class PaymentContext {
    private PaymentStrategy paymentStrategy;

    public void setPaymentStrategy(PaymentStrategy paymentStrategy) {
        this.paymentStrategy = paymentStrategy;
    }

    public void processPayment(int amount) {
        if (paymentStrategy != null) {
            paymentStrategy.pay(amount);
        } else {
            System.out.println("未设置支付策略");
        }
    }
}

客户端启动器 Main

package com.cheney.demo;

public class Main {
    public static void main(String[] args) {
        // 使用策略模式实现支付系统
        PaymentContext paymentContext = new PaymentContext();

        PaymentStrategy alipayStrategy = new AlipayStrategy();
        paymentContext.setPaymentStrategy(alipayStrategy);
        paymentContext.processPayment(100);

        PaymentStrategy weChatPayStrategy = new WeChatPayStrategy();
        paymentContext.setPaymentStrategy(weChatPayStrategy);
        paymentContext.processPayment(50);

        PaymentStrategy cardPaymentStrategy = new CardPaymentStrategy();
        paymentContext.setPaymentStrategy(cardPaymentStrategy);
        paymentContext.processPayment(200);
    }
}

在上述例子中,PaymentStrategy 是抽象策略,定义了支付策略的接口。AlipayStrategyWeChatPayStrategyCardPaymentStrategy 是具体策略,实现了支付策略的具体算法。PaymentContext 是环境类,维护一个对抽象策略的引用,并在运行时可以切换不同的具体策略。

在客户端中,我们使用策略模式实现了支付系统。通过设置不同的支付策略,可以轻松地选择不同的支付方式。

推荐阅读