java 策略模式_代码示例

quanzhankaifa

温馨提示:这篇文章已超过287天没有更新,请注意相关的内容是否还可用!

java 策略模式_代码示例

策略模式是一种行为型设计模式,它允许在运行时动态地选择算法的行为。该模式通过定义一系列算法类,将每个算法封装在独立的类中,并使它们可互换。这样,客户端可以根据需要选择合适的算法,而无需修改原有代码。

在Java中实现策略模式,首先需要定义一个策略接口,该接口声明了所有支持的算法方法。然后,创建多个实现该接口的具体策略类,每个类实现了接口中的算法方法。在客户端代码中,根据需要创建具体策略类的实例,并调用其算法方法。

下面是一个简单的示例,假设我们有一个订单类,根据不同的支付方式计算订单的支付金额。

定义一个策略接口`PaymentStrategy`,该接口声明了一个计算支付金额的方法`calculatePaymentAmount`:

public interface PaymentStrategy {

double calculatePaymentAmount(double orderAmount);

}

然后,创建两个具体策略类`CreditCardPaymentStrategy`和`PayPalPaymentStrategy`,分别实现了接口中的算法方法:

public class CreditCardPaymentStrategy implements PaymentStrategy {

@Override

public double calculatePaymentAmount(double orderAmount) {

// 根据信用卡支付方式计算支付金额

// ...

return calculatedAmount;

}

}

public class PayPalPaymentStrategy implements PaymentStrategy {

@Override

public double calculatePaymentAmount(double orderAmount) {

// 根据PayPal支付方式计算支付金额

// ...

return calculatedAmount;

}

}

在客户端代码中,根据需要选择合适的支付方式,并调用其算法方法计算支付金额:

public class Order {

private double orderAmount;

private PaymentStrategy paymentStrategy;

public Order(double orderAmount, PaymentStrategy paymentStrategy) {

this.orderAmount = orderAmount;

this.paymentStrategy = paymentStrategy;

}

public double calculatePaymentAmount() {

return paymentStrategy.calculatePaymentAmount(orderAmount);

}

}

public class Main {

public static void main(String[] args) {

Order order1 = new Order(100.0, new CreditCardPaymentStrategy());

double paymentAmount1 = order1.calculatePaymentAmount();

Order order2 = new Order(200.0, new PayPalPaymentStrategy());

double paymentAmount2 = order2.calculatePaymentAmount();

}

}

在上述示例中,`Order`类代表一个订单,根据传入的支付策略对象,调用其算法方法计算支付金额。客户端代码通过创建不同的订单对象,并传入不同的支付策略对象,实现了动态选择支付方式的功能。

文章版权声明:除非注明,否则均为莫宇前端原创文章,转载或复制请以超链接形式并注明出处。

取消
微信二维码
微信二维码
支付宝二维码