多态是工厂方法模式的核心机制,使客户端依赖抽象类型并运行时自动调用具体子类实现;通过抽象产品接口定义统一契约,工厂方法返回抽象类型而实际创建具体子类,客户端面向抽象编程实现动态绑定与无缝扩展。

多态在工厂方法模式中不是附加功能,而是让整个模式运转起来的关键机制。它让客户端代码只依赖抽象类型,运行时自动调用对应子类的具体实现——不需要 if-else 判断,也不需要强转,更不需修改已有业务逻辑。
用抽象产品接口统一行为契约
定义一个接口(或抽象类),声明所有具体产品共有的方法。比如支付处理器:
public interface PaymentProcessor {
void process(Order order);
String getChannel();
}
每个具体实现类都实现该接口,但内部逻辑完全独立:
立即学习“Java免费学习笔记(深入)”;
- AlipayProcessor:调用支付宝 SDK 发起支付
- WechatProcessor:组装微信 JSAPI 参数并签名
- PayPalProcessor:发送 HTTP 请求到 PayPal REST API
它们共享方法签名,但彼此无继承关系,也不耦合。
工厂方法返回抽象类型,实际创建具体子类
抽象工厂类声明一个返回抽象类型的工厂方法:
abstract class PaymentFactory {
abstract PaymentProcessor createProcessor();
}
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
每个具体工厂只负责一种产品,重写方法时可利用协变返回类型(可选):
class AlipayFactory extends PaymentFactory {
@Override
AlipayProcessor createProcessor() {
return new AlipayProcessor();
}
}
即使返回的是具体类型(如 AlipayProcessor),只要声明的引用是 PaymentProcessor,多态就能生效。
客户端通过父类引用调用,自动绑定子类实现
业务代码始终面向抽象编程:
PaymentFactory factory = new WechatFactory();
PaymentProcessor processor = factory.createProcessor();
processor.process(order); // 运行时执行 WechatProcessor.process()
这一行 processor.process() 看似调用接口方法,JVM 实际根据 processor 指向的真实对象类型决定执行哪个版本。调试时变量显示为 PaymentProcessor,但实例是 WechatProcessor ——这就是多态的动态绑定。
新增产品无需改老代码,靠多态自然扩展
要支持 Apple Pay,只需两步:
- 新增 ApplePayProcessor 实现 PaymentProcessor
- 新增 ApplePayFactory 继承 PaymentFactory,重写 createProcessor()
所有已存在的调用点(Controller、Service、测试类)完全不动。只要传入新的工厂实例,后续所有 process() 调用就自动走 Apple Pay 的逻辑——多态让这种切换静默发生。

















