策略模式是一种行为设计模式,它允许在运行时选择算法的行为。在 Java 中,你可以使用接口来定义不同的算法,并通过多态性在运行时选择要使用的算法。下面是一个简单的 Java 示例代码:
// 定义策略接口
interface PaymentStrategy {
void pay(int amount);
}
// 实现不同的支付策略
class CreditCardPayment implements PaymentStrategy {
private String cardNumber;
private String cvv;
private String expirationDate;
public CreditCardPayment(String cardNumber, String cvv, String expirationDate) {
this.cardNumber = cardNumber;
this.cvv = cvv;
this.expirationDate = expirationDate;
}
@Override
public void pay(int amount) {
System.out.println("Paid $" + amount + " with 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(int amount) {
System.out.println("Paid $" + amount + " with PayPal.");
// 实现具体的支付逻辑
}
}
// 使用策略的客户端类
class ShoppingCart {
private PaymentStrategy paymentStrategy;
public void setPaymentStrategy(PaymentStrategy paymentStrategy) {
this.paymentStrategy = paymentStrategy;
}
public void checkout(int amount) {
paymentStrategy.pay(amount);
}
}
public class StrategyPatternExample {
public static void main(String[] args) {
ShoppingCart cart = new ShoppingCart();
// 选择不同的支付策略
PaymentStrategy creditCardPayment = new CreditCardPayment("1234567890123456", "123", "12/24");
PaymentStrategy paypalPayment = new PayPalPayment("example@example.com", "password");
cart.setPaymentStrategy(creditCardPayment);
cart.checkout(100);
cart.setPaymentStrategy(paypalPayment);
cart.checkout(200);
}
}
在这个示例中,PaymentStrategy 接口定义了一个支付方法 pay()。然后有两个具体的支付策略实现了该接口:CreditCardPayment 和 PayPalPayment。ShoppingCart 类用来进行结账操作,它可以设置不同的支付策略。最后,StrategyPatternExample 类展示了如何使用这些类来实现策略模式。