当前位置:   article > 正文

Java设计模式中策略模式

Java设计模式中策略模式

策略模式是一种行为型设计模式,它允许在运行时选择算法的行为。这种模式定义了一系列算法,并使这些算法可以相互替换,使得算法的变化独立于使用算法的客户。

以下是策略模式的一般结构:

  1. Context(上下文):负责维护一个对Strategy对象的引用,并且将客户请求委托给Strategy对象。

  2. Strategy(策略):定义所有支持的算法的公共接口。通常是一个接口或者抽象类

  3. ConcreteStrategy(具体策略):实现了Strategy接口的具体算法实现。

下面是一个简单的Java示例,演示了如何使用策略模式:

// 1. Strategy
interface PaymentStrategy {
    void pay(double amount);
}

// 2. ConcreteStrategy
class CreditCardPayment implements PaymentStrategy {
    private String cardNumber;
    private String expirationDate;
    private String cvv;

    public CreditCardPayment(String cardNumber, String expirationDate, String cvv) {
        this.cardNumber = cardNumber;
        this.expirationDate = expirationDate;
        this.cvv = cvv;
    }

    @Override
    public void pay(double amount) {
        System.out.println("Paid $" + amount + " using Credit Card");
    }
}

class PayPalPayment implements PaymentStrategy {
    private String email;
    private String password;

    public PayPalPayment(String email, String password) {
        this.email = email;
        this.password = password;
    }

    @Override
    public void pay(double amount) {
        System.out.println("Paid $" + amount + " using PayPal");
    }
}

// 3. Context
class ShoppingCart {
    private PaymentStrategy paymentStrategy;

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

    public void checkout(double amount) {
        paymentStrategy.pay(amount);
    }
}

// 4. 使用示例
public class Main {
    public static void main(String[] args) {
        // 创建购物车对象
        ShoppingCart cart = new ShoppingCart();

        // 设置支付策略为信用卡
        cart.setPaymentStrategy(new CreditCardPayment("1234-5678-9012", "10/25", "123"));

        // 结账
        cart.checkout(100.0);

        // 设置支付策略为PayPal
        cart.setPaymentStrategy(new PayPalPayment("example@example.com", "password"));

        // 结账
        cart.checkout(200.0);
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70

在这个示例中,PaymentStrategy是策略接口,CreditCardPayment和PayPalPayment是具体策略。ShoppingCart是上下文,它持有一个对PaymentStrategy的引用,并在结账时调用支付方法。通过更改支付策略,我们可以在不修改ShoppingCart的情况下选择不同的支付方式。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/485732
推荐阅读
相关标签
  

闽ICP备14008679号