结构型模式(Structural Pattern)关注类和对象如何组合成更大的结构,重点解决功能扩展、接口适配和对象组合等问题。它们描述的不是"怎么创建对象",而是"对象之间如何搭接",往往通过继承或组合的方式将多个类/对象组织起来,形成更灵活、更易扩展的结构。
GoF 结构型模式包括代理、适配器、装饰者、桥接、外观、组合和享元 7 种。它们各自解决的问题可以概括如下:
| 模式 | 核心问题 | 一句话概括 |
|---|---|---|
| 代理模式 | 如何在不改动目标对象的前提下控制对它的访问 | 中间加一层代理,访问前/后做增强 |
| 适配器模式 | 已有接口与目标接口不匹配怎么办 | 转接头,把旧接口包装成需要的接口 |
| 装饰者模式 | 如何动态地为对象增加功能而不使用继承 | 一层一层"包"上去,灵活叠加职责 |
| 桥接模式 | 两个独立变化的维度如何避免类爆炸 | 用组合桥接两个维度,各自独立扩展 |
| 外观模式 | 子系统太复杂,调用方如何简化交互 | 提供一个统一的入口封装复杂子系统 |
| 组合模式 | 树形结构中叶子与容器如何统一处理 | 让单个对象与组合对象使用一致的接口 |
| 享元模式 | 大量细粒度对象如何节省内存 | 共享内部状态,减少重复对象 |
