OOP 设计模式 专栏导览
专栏定位
本专栏聚焦 面向对象设计原则与 23 种经典设计模式——但绝不是教科书式的 UML 图堆砌和脱离实际的玩具代码。每一个设计模式都要回答三个核心问题:它解决了什么问题?不用它会怎样?在真实的 Java 生态(JDK 源码、Spring、Netty、Mybatis)中它是怎么被使用的?
设计模式的价值不在于”背诵 23 种模式的定义”,而在于建立一种思维方式——面对复杂的软件设计问题时,能够识别出问题的结构,选择合适的抽象方式来管理复杂度。本专栏从 SOLID 五大原则出发,按创建型、结构型、行为型三大类逐一剖析每个模式的本质动机、实现变体和在工业级代码中的真实应用。
目标读者
- 希望从”能写代码”进阶到”写出可维护、可扩展代码”的中级工程师
- 阅读 Spring/Netty/JDK 源码时经常遇到设计模式但理解不深的开发者
- 准备系统性提升面向对象设计能力的技术负责人
专栏目录
| 序号 | 标题 | 核心内容 |
|---|---|---|
| 01 | 01 SOLID 原则——面向对象设计的五大基石 | 单一职责原则(SRP)、开闭原则(OCP)、里氏替换原则(LSP)、接口隔离原则(ISP)、依赖倒置原则(DIP)——每个原则的定义、违反时的代码坏味道、遵守时的设计效果、在 Spring/JDK 中的体现 |
| 02 | 02 创建型模式(上)——单例、工厂方法与抽象工厂 | 单例模式的五种实现(饿汉/懒汉/DCL/静态内部类/枚举)与各自的线程安全分析、工厂方法的多态创建(Collection.iterator)、抽象工厂的产品族概念(JDBC 的 Connection/Statement/ResultSet)、Spring BeanFactory 的工厂模式应用 |
| 03 | 03 创建型模式(下)——建造者与原型模式 | 建造者模式解决的”伸缩构造器”问题、链式 API 设计(StringBuilder/Lombok @Builder/Protobuf Builder)、原型模式的浅拷贝 vs 深拷贝(Cloneable 的陷阱)、Spring 的 prototype scope Bean |
| 04 | 04 结构型模式(上)——代理、适配器与装饰器 | 代理模式的三种变体(静态代理/JDK 动态代理/CGLIB)、Spring AOP 的代理选择逻辑、适配器模式的接口转换(InputStreamReader/HandlerAdapter)、装饰器模式的功能增强(Java IO 流体系/Collections.synchronizedList)、代理 vs 装饰器的本质区别 |
| 05 | 05 结构型模式(下)——外观、桥接、组合与享元 | 外观模式的子系统封装(SLF4J 日志门面/Spring JdbcTemplate)、桥接模式的抽象与实现分离(JDBC Driver 体系)、组合模式的树形结构(Mybatis SqlNode/Spring CompositeHealthIndicator)、享元模式的对象复用(Integer 缓存池/String 常量池/线程池) |
| 06 | 06 行为型模式(上)——策略、模板方法与观察者 | 策略模式的算法替换(Comparator/Spring Resource/线程池拒绝策略)、模板方法的骨架固定(AbstractApplicationContext.refresh/JdbcTemplate.execute)、观察者模式的事件通知(Spring ApplicationEvent/JDK Observable) |
| 07 | 07 行为型模式(中)——责任链、命令与迭代器 | 责任链模式的请求传递(Netty ChannelPipeline/Servlet Filter/Mybatis Plugin)、命令模式的请求封装(Runnable/Callable/JdbcTemplate 的 Statement 回调)、迭代器模式的统一遍历(Iterator 接口/Stream 的内部迭代) |
| 08 | 08 行为型模式(下)——状态、中介者、备忘录与访问者 | 状态模式的状态驱动行为(订单状态机/Thread 的六种状态)、中介者模式的通信集中(MVC 中的 Controller/消息队列)、备忘录模式的状态快照(事务回滚/编辑器撤销)、访问者模式的双分派(ASM 字节码操作/编译器语法树遍历) |
| 09 | 09 设计模式在 Spring 中的应用全景 | Spring 中超过 15 种设计模式的系统梳理——工厂(BeanFactory)、单例(Bean 默认作用域)、代理(AOP)、模板方法(JdbcTemplate/RestTemplate)、观察者(ApplicationEvent)、策略(HandlerMapping)、适配器(HandlerAdapter)、装饰器(BeanWrapper)、责任链(HandlerInterceptor)、建造者(BeanDefinitionBuilder) |
| 10 | 10 设计模式在 JDK 源码中的应用全景 | JDK 中设计模式的经典应用——迭代器(Iterator)、工厂方法(Collection.iterator)、装饰器(IO 流)、适配器(InputStreamReader)、策略(Comparator)、模板方法(AbstractList/AbstractMap)、享元(Integer/String 缓存)、代理(Proxy/InvocationHandler)、命令(Runnable/Callable)、原型(Cloneable) |
推荐阅读路径
基础路径:01 → 02 → 03 → 04 → 06
进阶路径:05 → 07 → 08
实战应用路径:09 → 10(建议在阅读 Spring/JDK 源码后回看)
前置知识
- Java 基础语法、接口与继承、泛型
- 建议与 Spring Core、Netty、MyBatis 专栏交叉阅读——设计模式的价值在实际框架中才能真正体会
关联专栏
- Spring Core:IoC 容器(工厂模式)、AOP(代理模式)、事件机制(观察者模式)
- Netty:Pipeline(责任链模式)、EventLoop(反应器模式)、ByteBuf 池化(享元模式)
- MyBatis:Mapper 代理(代理模式)、SqlSession(模板方法模式)