GoF 23 种设计模式学习笔记,按三大类(创建型 / 结构型 / 行为型)组织。点击下面的文章阅读:
GoF(Gang of Four,四人帮):指《设计模式:可复用面向对象软件的基础》的四位作者——Erich Gamma、Richard Helm、Ralph Johnson、John Vlissides。他们 1994 年总结了 23 种经典设计模式,分三大类:创建型(5 种)、结构型(7 种)、行为型(11 种)。
创建型(5 种)
- 单例模式——饿汉式/懒汉式/双重检查锁/静态内部类/枚举,多线程安全与反射/序列化破坏的应对
- 工厂模式——简单工厂/工厂方法/抽象工厂三级演进,Spring 的 BeanFactory 与 @Bean 就是它的落地
- 抽象工厂模式——创建"产品族",保证一族产品配套,与工厂模式的区别
- 建造者模式——参数多+可选参数的构造痛点,链式调用,Lombok @Builder
- 原型模式——用克隆代替 new,浅拷贝 vs 深拷贝,Spring @Scope("prototype")
结构型(7 种)
- 适配器模式——接口不兼容的"翻译官",SLF4J 统一日志的底层
- 桥接模式——抽象与实现分离,解决类爆炸,JDBC 的底层
- 组合模式——树形结构的统一处理,文件系统/菜单
- 装饰器模式——动态增强功能,组合优于继承,Java IO 流套娃
- 外观模式——统一入口屏蔽复杂子系统,SLF4J/JdbcTemplate
- 享元模式——共享不可变对象省内存,Integer 缓存/String 常量池
- 代理模式——控制访问,Spring AOP/MyBatis 的动态代理底层
行为型(11 种)
- 责任链模式——请求沿链传递谁处理谁停,拦截器/Filter/审批流的底层思想
- 命令模式——把请求封装成对象,可排队/撤销,线程池 Runnable
- 解释器模式——定义文法解释执行,正则/SpEL 的思想
- 迭代器模式——统一遍历方式,Java Iterator/增强 for
- 中介者模式——对象通信经中介者中转,网状变星形,聊天室
- 备忘录模式——保存/恢复对象状态,编辑器撤销/游戏存档
- 观察者模式——一对多状态通知,与发布订阅模式的区别
- 状态模式——状态封装成类,消灭 if/else,订单状态机
- 策略模式——消除 if/else 分支,算法封装成类,与工厂模式是黄金搭档
- 模板方法模式——父类定骨架子类填空,JdbcTemplate/RestTemplate
- 访问者模式——操作与数据结构分离,加操作不改结构,编译器 AST
