多态配合简单工厂模式的核心是业务代码只依赖接口,工厂封装具体实现的创建逻辑。工厂方法返回接口类型,如paymentprocessor create(paymenttype type),调用方通过统一接口调用,jvm动态绑定子类方法;新增支付方式只需扩展枚举、添加switch分支和实现类,业务代码零修改,杜绝instanceof和强制转型,确保类型安全与可维护性。

多态配合简单工厂模式,核心是让业务代码只认接口、不碰实现,工厂则把“new谁”这个动作锁在自己内部——调用方拿到的永远是同一类型引用,但运行时指向不同子类对象。
统一返回接口类型,屏蔽具体实现
工厂方法的返回值必须是接口或抽象类,比如 PaymentProcessor create(String type)。所有支付实现类(AlipayProcessor、WechatProcessor)都实现该接口。业务代码声明变量时只写 PaymentProcessor processor = factory.create("alipay");,后续调用 processor.process(order) 时,JVM 自动分派到实际子类的方法,编译期完全不知道背后是谁。
工厂内部做判断,外部零感知变化
工厂类里可以用 if-else 或 switch 根据参数创建不同实例,但这些分支对调用方完全不可见:
- 传入 "alipay" → 返回 AlipayProcessor 实例
- 传入 "wechat" → 返回 WechatProcessor 实例
- 新增 "paypal" → 只需在工厂里加一个分支 + 写新实现类
业务代码一行不用改,也不需要 import 新类名,更不会出现 instanceof 或强制转型。
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
用枚举代替字符串,防止拼写错误
把类型参数从 String 升级为枚举,能提前规避运行时异常:
- 定义 enum PaymentType { ALIPAY, WECHAT, PAYPAL }
- 工厂方法改为 PaymentProcessor create(PaymentType type)
- 新增类型时,扩展枚举 + 在 switch 中加 case + 实现新类,安全又清晰
静态工厂方法要返回抽象类型,不能返回 Object
static 工厂方法是简单工厂常用形式,但它必须返回接口或父类类型:
- ✅ 正确:public static PaymentProcessor of(String type)
- ❌ 错误:public static Object of(String type) —— 强转破坏类型安全,也失去多态意义
- 避免反射(Class.forName):绕过编译检查,出错晚、难调试
不复杂但容易忽略:多态不是语法技巧,而是把“变”的部分(创建哪个类)关进工厂的笼子里,让业务代码彻底对新增类型免疫。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










