java多态是策略模式的底层机制,通过接口定义统一契约、子类实现具体逻辑、上下文持有并调用策略,结合工厂或配置实现动态切换,彻底消除if-else耦合。

Java 多态是实现策略模式解耦的底层支撑,不是额外工具,而是语言机制本身。关键在于用接口或抽象类统一行为契约,再靠子类各自实现,让调用方只面向接口编程,不关心具体是谁在干活。
定义清晰的策略接口
接口是策略模式的起点,它只声明“能做什么”,不涉及“怎么做”。比如支付场景:
- 写一个 PaymentStrategy 接口,含 pay(double amount) 方法
- 所有具体支付方式——微信、支付宝、银行卡——都实现这个接口
- 接口方法名和参数保持一致,这是多态能运行的前提
编写多个具体策略类
每个类封装一种独立逻辑,彼此隔离:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
- WechatPayment 实现扫码调起微信 SDK 的细节
- AlipayPayment 封装生成支付链接、验签等流程
- 新增 ApplePay?只需加个新类,实现同一接口,其他代码全不动
- 类之间不继承、不耦合,只共享接口契约
用上下文类持有并执行策略
上下文不写业务逻辑,只做“转手”工作:
- 定义 PaymentContext 类,内部持有一个 PaymentStrategy 引用
- 提供 setStrategy() 方法支持运行时切换
- executePayment() 只调用 strategy.pay(amount),完全不判断类型
- 这样,if-else 或 switch 判断支付方式的代码就从主流程里彻底消失了
结合工厂或配置动态选择策略
避免在业务代码里 new 具体类,把创建逻辑抽离出来:
- 写一个 PaymentStrategyFactory,根据字符串(如 "wechat")返回对应策略实例
- 也可以用 Map
预加载,查表获取,更快更轻量 - Spring 项目中,还可直接用 @Autowired 注入不同策略 Bean,配合 @Qualifier 区分
- 这样,新增一种策略,只改工厂或配置,业务类一行都不用动
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










