Java多态实现通用业务处理的核心是用父类或接口统一接收子类对象,运行时自动调用具体实现,避免if-else,新增业务只需添加实现类而不修改原有代码。

Java 中利用多态编写通用业务处理代码,核心是“用父类(或接口)类型统一接收不同子类对象,再让运行时自动调用各自的具体实现”。这样能避免大量 if-else 判断具体类型,也方便后续新增业务类型而无需修改已有逻辑。
定义统一的抽象层
先设计一个抽象类或接口,封装所有业务对象共有的行为。比如处理订单,不同渠道(微信、支付宝、银行卡)的订单有各自验签、扣款、回调逻辑,但都属于“支付行为”:
- 声明 PaymentProcessor 接口,含
validate()、execute()、notify()等方法 - 每个渠道实现该接口:
WechatProcessor、AlipayProcessor、BankProcessor - 方法体里写各自真实逻辑(如微信调用微信 SDK,支付宝走其 OpenAPI)
用父类型参数接收,不关心具体是谁
业务主流程方法只依赖抽象层,不和任何具体实现耦合:
- 把处理器作为方法参数:
public void handleOrder(PaymentProcessor processor, Order order) - 内部直接调用
processor.validate()、processor.execute()—— 编译时只检查接口有没有这些方法,运行时才决定执行哪个子类版本 - 调用方传入
new WechatProcessor()或new AlipayProcessor()都可以,方法体完全不用改
配合工厂或策略模式动态选择
实际中,不会硬编码 new 某个子类。通常结合业务标识(如 channelCode)来选实例:
- 写一个简单工厂:根据 channel 字符串返回对应 Processor 实例
- 或用 Spring 的
@Qualifier+ 接口注入,让容器自动装配匹配的 Bean - 关键点:主业务代码里只看到
PaymentProcessor,看不到任何Wechat或Alipay字样
扩展新业务只需加类,不改老代码
比如下个月要支持 Apple Pay:
- 新增
ApplePayProcessor implements PaymentProcessor,实现全部方法 - 在工厂里加一行
"apple" → new ApplePayProcessor() - 原有
handleOrder()方法、订单调度逻辑、日志统计等全部无需改动 - 这就是多态带来的可扩展性——新增即插即用,旧逻辑零侵入
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











