策略模式
策略模式是一种行为设计模式,它定义了一系列算法,并将每个算法封装在独立的可互换的策略类中,使得算法可以独立于客户端而变化。
下面是使用Java编写的一个简单的策略模式示例:
// 策略接口
interface PaymentStrategy {
void pay(double amount);
}
// 具体策略类1
class CreditCardPayment implements PaymentStrategy {
private String cardNumber;
private String cvv;
public CreditCardPayment(String cardNumber, String cvv) {
this.cardNumber = cardNumber;
this.cvv = cvv;
}
@Override
public void pay(double amount) {
System.out.println("Paying $" + amount + " with credit card: " + cardNumber);
}
}
// 具体策略类2
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("Paying $" + amount + " with PayPal account: " + email);
}
}
// 环境类
class ShoppingCart {
private PaymentStrategy paymentStrategy;
public void setPaymentStrategy(PaymentStrategy paymentStrategy) {
this.paymentStrategy = paymentStrategy;
}
public void checkout(double amount) {
paymentStrategy.pay(amount);
}
}
// 示例
public class Main {
public static void main(String[] args) {
ShoppingCart cart = new ShoppingCart();
// 使用信用卡支付
PaymentStrategy creditCardPayment = new CreditCardPayment("1234567890", "123");
cart.setPaymentStrategy(creditCardPayment);
cart.checkout(100.50);
// 使用PayPal支付
PaymentStrategy payPalPayment = new PayPalPayment("[email protected]", "password");
cart.setPaymentStrategy(payPalPayment);
cart.checkout(250.75);
}
}
在这个示例中,我们定义了一个策略接口 PaymentStrategy
,并实现了两个具体的策略类 CreditCardPayment
和 PayPalPayment
。然后,我们创建了一个环境类 ShoppingCart
,它具有一个 paymentStrategy
成员变量,用于执行支付操作。通过设置不同的策略,我们可以在购物车中使用不同的支付方式进行结账。
在示例中,我们首先使用信用卡支付了购物车中的商品,然后使用 PayPal 账户进行支付。通过策略模式,我们可以动态地切换不同的支付策略,而不需要修改 ShoppingCart
类的代码。
策略模式使得算法的实现独立于客户端,并可以在运行时动态选择不同的算法,提高了代码的灵活性和可扩展性。
标签:PaymentStrategy,策略,11.4,void,amount,public,String From: https://www.cnblogs.com/luoqingci/p/18556286