网站建设分金手指排名十七,今天刚刚发生的新闻最新新闻,电子商务平台的营销推广方案,国家企业信用信息公示系统网官网一、概述
策略模式是一种行为型设计模式#xff0c;它允许在运行时选择算法的行为。策略模式通过将算法封装成独立的策略类#xff0c;使得它们可以相互替换#xff0c;而不影响使用算法的客户端。这样可以使客户端代码与具体算法的实现细节解耦#xff0c;提高了代码的可…一、概述
策略模式是一种行为型设计模式它允许在运行时选择算法的行为。策略模式通过将算法封装成独立的策略类使得它们可以相互替换而不影响使用算法的客户端。这样可以使客户端代码与具体算法的实现细节解耦提高了代码的可维护性和扩展性。
在策略模式中有三个主要角色
环境Context它持有一个策略对象并在运行时调用策略对象的方法。抽象策略Strategy它定义了一个公共接口用于封装不同的算法或行为。具体策略Concrete Strategy它实现了抽象策略接口提供具体的算法或行为实现。
二、代码
下面是一个简单的策略模式的代码示例
//1.抽象策略接口支付策略
public interface PaymentStrategy {void pay(double amount);
}
//2.具体策略实现类信用卡支付策略
public class CreditCardStrategy implements PaymentStrategy {private String name;private String cardNumber;private String cvv;public CreditCardStrategy(String name, String cardNumber, String cvv) {this.name name;this.cardNumber cardNumber;this.cvv cvv;}public void pay(double amount) {System.out.println(Paying $ amount with credit card: cardNumber);}
}
//3.具体策略实现类PayPal支付策略
public class PayPalStrategy implements PaymentStrategy {private String email;private String password;public PayPalStrategy(String email, String password) {this.email email;this.password password;}public void pay(double amount) {System.out.println(Paying $ amount with PayPal account: email);}
}
//4.策略环境类购物车
public class ShoppingCart {private PaymentStrategy paymentStrategy;public void setPaymentStrategy(PaymentStrategy paymentStrategy) {this.paymentStrategy paymentStrategy;}public void checkout(double amount) {paymentStrategy.pay(amount);}
}
//5.测试类
public class Test {public static void main(String[] args) {ShoppingCart cart new ShoppingCart();// 使用信用卡支付PaymentStrategy creditCardStrategy new CreditCardStrategy(tom, 123456789, 123);cart.setPaymentStrategy(creditCardStrategy);cart.checkout(100.0);// 使用PayPal支付PaymentStrategy payPalStrategy new PayPalStrategy(exampleexample.com, password);cart.setPaymentStrategy(payPalStrategy);cart.checkout(200.0);}
}在上面的代码中我们定义了一个抽象策略接口 PaymentStrategy它包含了一个支付方法 pay()。然后我们实现了两个具体策略类 CreditCardStrategy 和 PayPalStrategy分别表示使用信用卡支付和使用PayPal支付的具体算法实现。
在环境类 ShoppingCart 中我们通过设置不同的支付策略对象来决定使用何种支付方式进行结算。在测试代码中我们创建了一个购物车对象 cart然后使用信用卡支付和PayPal支付进行结算分别设置了相应的支付策略对象。