策略模式
推荐阅读:策略设计模式
介绍
假设有一个支付系统,需要支持使用不同的支付方式(策略),我们可以抽象出一个策略接口,然后定义具体的策略类来实现该接口。
策略接口:
public interface PaymentStrategy { void pay(int amount); }
具体策略:
public class CreditCardPayment implements PaymentStrategy { public void pay(int amount) { System.out.println("Using Credit Card to pay: " + amount); } } public class PayPalPayment implements PaymentStrategy { public void pay(int amount) { System.out.println("Using PayPal to pay: " + amount); } }
使用策略模式,我们可以轻松地切换支付方式,而无需修改其他代码。方法就是创建一个上下文对象,并将不同的策略对象注入到上下文中:
上下文:
public class ShoppingCart { private PaymentStrategy paymentStrategy; public void setPaymentStrategy(PaymentStrategy paymentStrategy) { this.paymentStrategy = paymentStrategy; } public void checkout(int amount) { paymentStrategy.pay(amount); } }
而客户端代码只需要调用上下文对象的 checkout 方法,并根据需要设置不同的策略对象即可:
ShoppingCart cart = new ShoppingCart(); cart.setPaymentStrategy(new CreditCardPayment()); cart.checkout(100); // Using Credit Card to pay: 100 cart.setPaymentStrategy(new PayPalPayment()); cart.checkout(200); // Using PayPal to pay: 200
这样不仅能够轻松地切换支付方式,而且如果需要加入新的支付方式,只需创建新的策略对象并注入到上下文中,而不需要修改其他代码。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
· 零经验选手,Compose 一天开发一款小游戏!