网站建设相关博客,网站建设与,院系网站建设,农业建设项目管理信息系统网站策略模式是一种行为型设计模式#xff0c;它允许在运行时选择算法的行为。这种模式定义了一系列算法#xff0c;并使这些算法可以相互替换#xff0c;使得算法的变化独立于使用算法的客户。
以下是策略模式的一般结构#xff1a; Context#xff08;上下文#xff09;它允许在运行时选择算法的行为。这种模式定义了一系列算法并使这些算法可以相互替换使得算法的变化独立于使用算法的客户。
以下是策略模式的一般结构 Context上下文负责维护一个对Strategy对象的引用并且将客户请求委托给Strategy对象。 Strategy策略定义所有支持的算法的公共接口。通常是一个接口或者抽象类。 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;}Overridepublic 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;}Overridepublic 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);// 设置支付策略为PayPalcart.setPaymentStrategy(new PayPalPayment(exampleexample.com, password));// 结账cart.checkout(200.0);}
}在这个示例中PaymentStrategy是策略接口CreditCardPayment和PayPalPayment是具体策略。ShoppingCart是上下文它持有一个对PaymentStrategy的引用并在结账时调用支付方法。通过更改支付策略我们可以在不修改ShoppingCart的情况下选择不同的支付方式。