策略模式(Strategy Pattern)
将每个条件分支的实现作为一个独立的策略类,然后使用一个上下文对象来选择要执行的策略。这种方法可以将大量的if else语句转换为对象之间的交互,从而提高代码的可维护性和可扩展性。
示例:
首先,我们定义一个接口来实现所有策略的行为:
public interface PaymentStrategy {
void pay(double amount);
}
接下来,我们定义具体的策略类来实现不同的支付方式:
public class CreditCardPaymentStrategy implements PaymentStrategy {
private String name;
private String cardNumber;
private String cvv;
private String dateOfExpiry;
public CreditCardPaymentStrategy(String name, String cardNumber, String cvv, String dateOfExpiry) {
this.name = name;
this.cardNumber = cardNumber;
this.cvv = cvv;
this.dateOfExpiry = dateOfExpiry;
}
public void pay(double amount) {
System.out.println(amount + " paid with credit card");
}
}
public class PayPalPaymentStrategy implements PaymentStrategy {
private String emailId;
private String password;
public PayPalPaymentStrategy(String emailId, String password) {
this.emailId = emailId;
this.password = password;
}
public void pay(double amount) {
System.out.println(amount + " paid using PayPal");
}
}
public class CashPaymentStrategy implements PaymentStrategy {
public void pay(double amount) {
System.out.println(amount + " paid in cash");
}
}
现在,我们可以在客户端代码中创建不同的策略对象,并将它们传递给一个统一的支付类中,这个支付类会根据传入的策略对象来调用相应的支付方法:
public class ShoppingCart {
private List<Item&g