策略模式
策略模式(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
接口并提供相应的支付逻辑即可,而不需要修改原有的订单类代码。这样,我们可以根据实际需求动态地选择不同的支付策略,使得系统更加灵活和可扩展。
本文来自博客园,作者:博客-涛,转载请注明原文链接:https://www.cnblogs.com/htmsmile/p/17621975.html