java多态是设计模式的底层骨架,支撑策略、工厂、模板方法和观察者等模式:策略用接口封装算法并动态切换,工厂隐藏创建细节并统一使用,模板方法固化流程并开放定制点,观察者统一通知机制并分发不同逻辑。

Java多态不是语法装饰,而是设计模式的底层骨架。它让接口与实现解耦,使系统能在不修改调用方的前提下灵活替换行为。这种“面向抽象编程”的能力,正是策略、工厂、模板方法等主流模式得以落地的核心支撑。
策略模式:用多态动态切换算法
当业务中存在多种可互换的算法(比如支付方式、排序逻辑、折扣规则),策略模式通过统一接口封装差异,再由多态决定运行时执行哪一个。
- 定义接口(如 PaymentStrategy)作为抽象契约,不关心具体怎么付
- 每个实现类(CreditCardPayment、WeChatPay)重写 pay() 方法,体现各自逻辑
- 上下文类(PaymentProcessor)只持有接口引用,调用 strategy.pay() —— JVM 自动绑定到实际对象的方法
- 新增一种支付方式?只需加个新类实现接口,完全不用改已有代码
工厂模式:用多态隐藏对象创建细节
工厂模式解决“谁来造对象”的问题,而多态确保造出来的对象能被统一使用。
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
- 工厂接口(ShapeFactory)声明 createShape(),返回抽象类型 Shape
- 不同工厂(CircleFactory、RectangleFactory)返回不同子类实例,但类型都是 Shape
- 客户端拿到 Shape 引用后直接调用 draw(),无需 instanceof 或强制转型
- 扩展新图形?加一个 TriangleFactory 和 Triangle 类即可,调用侧零改动
模板方法模式:用多态固化流程、开放定制点
该模式把算法骨架定义在父类中,把可变步骤延迟到子类实现——这本身就是多态的典型应用。
- 抽象类(ReportGenerator)定义 generate() 模板方法,内含 loadData()、format()、export() 等钩子
- 子类(PdfReport、ExcelReport)选择性重写部分钩子方法
- 父类统一调度,运行时自动调用各子类重写的版本,流程不变、行为可插拔
- 新增报告格式?继承抽象类、重写对应方法,不碰原有模板逻辑
观察者模式:用多态统一通知机制
当一个对象状态变化需通知多个依赖者,且依赖者行为各异,多态让通知逻辑保持简洁。
- 所有观察者实现同一接口(Observer),声明 update()
- 被观察者(Subject)只维护 List
,遍历时调用 observer.update() - 短信通知、邮件通知、日志记录等不同实现,都靠多态自动分发到对应逻辑
- 添加新通知渠道?实现接口并注册,无侵入式扩展
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










