一、引言
设计模式是软考软件设计师考试中面向对象技术模块的核心考点,每年分值占比约6-10 分,题型以选择题为主,偶尔会在案例分析题中出现应用场景分析。按照 GoF 的经典分类,设计模式共分为三大类:创建型模式(5 种,处理对象创建逻辑)、结构型模式(7 种,处理类与对象的组合结构)、行为型模式(11 种,处理对象间的交互与职责分配)。
本文作为设计模式系列的收官内容,系统梳理后两类共 18 种模式的核心定义、适用场景、分类属性,配套完整分类表与真题演练,帮助考生全面覆盖所有设计模式考点。本文核心知识点包括:结构型 7 种模式的核心机制与应用场景、行为型 11 种模式的交互逻辑与适用边界、设计模式分类规则与记忆方法、真题考点与答题技巧。
二、结构型设计模式(7 种)
结构型模式 的核心目标是通过类继承或对象组合的方式,将多个类或对象组装成更复杂的结构,同时保证结构的灵活性和可扩展性,其中除类适配器外均为对象结构型模式,基于组合复用原则实现,比继承复用具有更高的灵活性。
2.1 核心模式定义与机制
适配器模式(Adapter)
定义:将一个类的现有接口转换成客户期望的另一个接口,解决接口不兼容导致类无法协同工作的问题。核心机制包含三个角色:目标接口(客户期望的接口)、适配器(实现目标接口,持有被适配者实例)、被适配者(现有接口不兼容的类)。分为类适配器(通过继承被适配者实现)和对象适配器(通过组合被适配者实例实现)两类,对象适配器的适用范围更广,符合开闭原则。
记忆口诀:转换兼容接口。
典型应用场景:遗留系统接口适配、第三方库接口统一封装。
桥接模式(Bridge)
定义:将抽象部分与它的实现部分分离,使二者都可以独立地扩展变化,避免类数量爆炸的问题。核心机制是将继承关系转换为关联关系,抽象层定义业务接口,持有实现层的引用,实现层定义底层操作接口,二者独立扩展互不影响。
记忆口诀:抽象实现分离。
典型应用场景:跨平台 UI 框架设计(抽象层为 UI 组件,实现层为不同操作系统的渲染接口)、多维度扩展的业务系统(如不同支付渠道对接不同商户类型)。
组合模式(Composite)
定义:将对象组合成树形结构以表示 "部分 - 整体" 的层次结构,使得客户端对单个对象(叶子节点)和组合对象(容器节点)的使用具有一致性。核心机制是叶子节点和容器节点实现统一的组件接口,容器节点内部维护子节点集合,递归处理子节点操作。
记忆口诀:树形结构一致访问。
典型应用场景:文件系统设计(文件为叶子节点,文件夹为容器节点)、菜单权限系统设计(菜单项为叶子节点,菜单目录为容器节点)。
装饰器模式(Decorator)
定义:动态地给一个对象添加额外的职责,比通过继承生成子类的方式更灵活。核心机制是装饰器类与被装饰类实现相同的接口,持有被装饰类的实例,在调用原有方法的前后添加增强逻辑,支持多层装饰叠加。
记忆口诀:动态附加职责。
典型应用场景:IO 流的过滤器设计、日志增强功能、权限校验扩展。
外观模式(Facade)
定义:为子系统中的一组接口提供一个统一的高层访问接口,屏蔽子系统的内部复杂性,使得子系统更易于使用。核心机制是外观类封装子系统的多个组件调用逻辑,对外暴露简化的统一接口,客户端无需与子系统内部组件交互。
记忆口诀:统一高层界面。
典型应用场景:微服务网关设计、复杂 SDK 的封装、第三方系统对接的统一入口。
享元模式(Flyweight)
定义:运用共享技术有效支持大量细粒度对象的复用,降低内存开销。核心机制是将对象的状态分为内部状态(可共享,不随场景变化)和外部状态(不可共享,随场景变化),享元工厂缓存内部状态相同的享元对象,客户端获取对象时优先返回缓存实例,传入外部状态完成操作。
记忆口诀:共享细粒度对象。
典型应用场景:字符串常量池、数据库连接池、网页编辑器中的字体和样式对象复用。
代理模式(Proxy)
定义:为其他对象提供一种代理以控制对这个对象的访问。核心机制是代理类与目标类实现相同的接口,持有目标类的实例,在调用目标方法前后添加控制逻辑(权限校验、缓存、延迟加载等)。根据使用场景可分为远程代理、虚拟代理、保护代理、缓存代理等子类。
记忆口诀:控制对象访问。
典型应用场景:RPC 框架的远程服务代理、Spring AOP 的动态代理、大图片的懒加载代理。

7 种结构型模式分类与角色关系示意图,左侧标注模式名称,右侧展示每种模式的核心角色交互关系,区分类模式与对象模式。
2.2 结构型模式对比与适用边界
相似模式区分:适配器模式是对现有接口的转换,不改变原有接口的功能;装饰器模式是对原有功能的增强,不改变接口定义;代理模式是对原有对象访问的控制,不改变原有接口的功能。
设计原则遵循:所有结构型对象模式均遵循组合复用原则,优先使用对象组合而非类继承扩展功能,其中适配器、桥接、装饰器、外观、代理模式均遵循开闭原则,扩展新功能无需修改原有代码。
三、行为型设计模式(11 种)
行为型模式 的核心目标是描述类或对象之间的交互协作方式,以及职责分配规则,实现系统的松耦合和高扩展性,其中模板方法模式和解释器模式为类行为型模式,其余均为对象行为型模式。
3.1 核心模式定义与机制
模板方法模式(Template Method)
定义:定义一个操作中的算法骨架,将部分可变步骤延迟到子类中实现,使得子类可以在不改变算法整体结构的前提下,重定义算法的某些特定步骤。核心机制是抽象类定义固定的算法执行流程,声明抽象的可变步骤,子类实现抽象步骤完成个性化逻辑。属于行为型类模式,通过继承实现扩展。
记忆口诀:重定义算法步骤。
典型应用场景:框架的流程固化(如 Spring 的 JdbcTemplate、Servlet 的 service 方法流程)、业务流程的标准化模板。
解释器模式(Interpreter)
定义:给定一个语言,定义它的文法的一种表示,并定义一个解释器,使用该表示来解释语言中的句子。核心机制是抽象表达式定义解释操作接口,终结符表达式对应文法中的终结符,非终结符表达式对应文法中的组合规则,上下文存储解释过程中的全局信息。属于行为型类模式,通过递归组合表达式实现复杂文法的解释。
记忆口诀:解释文法句子。
典型应用场景:自定义规则引擎、简单编程语言的解析、正则表达式解释器。
观察者模式(Observer)
定义:定义对象间的一对多依赖关系,当一个对象(主题)的状态发生改变时,所有依赖它的对象(观察者)都得到通知并自动更新。核心机制是主题维护观察者集合,提供注册、移除观察者的方法,状态变化时遍历集合通知所有观察者,观察者实现统一的更新接口。
记忆口诀:状态变化自动通知。
典型应用场景:消息订阅推送系统、事件监听机制、数据变更的多端同步。
策略模式(Strategy)
定义:定义一系列算法,将每个算法封装起来,并且使它们可以相互替换,让算法独立于使用它的客户端而变化。核心机制是抽象策略定义算法接口,具体策略实现不同的算法逻辑,上下文持有策略实例,客户端根据场景切换具体策略实现。
记忆口诀:算法可相互替换。
典型应用场景:不同的支付方式实现、多种排序算法切换、定价策略动态调整。
责任链模式(Chain of Responsibility)
定义:使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合,将这些对象连成一条链,沿着链传递请求,直到有对象处理它为止。核心机制是抽象处理者定义处理方法和下一个处理者的引用,具体处理者实现处理逻辑,判断是否能够处理当前请求,若不能则传递给下一个处理者。
记忆口诀:请求沿链传递处理。
典型应用场景:日志级别处理、权限校验流程、工作流审批系统。
状态模式(State)
定义:允许一个对象在其内部状态改变时改变它的行为,对象看起来似乎修改了它的类。核心机制是抽象状态定义状态对应的行为接口,具体状态实现不同状态下的行为逻辑,上下文持有当前状态实例,状态变化时切换当前状态实例,对外暴露统一的行为方法。
记忆口诀:状态改变行为变化。
典型应用场景:订单状态流转、工作流状态管理、有限状态机实现。
命令模式(Command)
定义:将一个请求封装为一个对象,从而使得可以用不同的请求对客户端进行参数化,支持请求的排队、日志记录、撤销操作等功能。核心机制是抽象命令定义执行和撤销接口,具体命令持有接收者实例,实现执行和撤销逻辑,调用者持有命令对象,调用命令执行方法,接收者执行实际的业务逻辑。
记忆口诀:封装请求支持撤销。
典型应用场景:菜单命令设计、事务回滚机制、指令队列实现。
访问者模式(Visitor)
定义:表示一个作用于某对象结构中的各元素的操作,允许在不改变各元素的类的前提下,定义作用于这些元素的新操作。核心机制是抽象访问者定义针对不同元素的访问操作接口,具体访问者实现不同的访问逻辑,元素定义接受访问者的方法,对象结构维护元素集合,遍历元素调用接受方法。
记忆口诀:不改变类定义新操作。
典型应用场景:编译器的语法树处理、报表统计系统、复杂对象结构的多维度操作。
中介者模式(Mediator)
定义:用一个中介对象来封装一系列对象的交互,使得各对象不需要显式地相互引用,从而使其耦合松散,并且可以独立地改变它们之间的交互。核心机制是抽象中介者定义同事对象的交互接口,具体中介者持有所有同事对象的引用,协调同事对象之间的交互,同事对象持有中介者引用,不直接与其他同事交互。
记忆口诀:中介封装对象交互。
典型应用场景:聊天室系统、航空管制系统、MVC 架构中的控制器。
迭代器模式(Iterator)
定义:提供一种方法顺序访问一个聚合对象中的各个元素,而不暴露该对象的内部表示。核心机制是抽象迭代器定义遍历操作接口(hasNext、next 等),具体迭代器实现聚合对象的遍历逻辑,聚合对象定义创建迭代器的方法。
记忆口诀:顺序访问聚合元素。
典型应用场景:集合框架的遍历接口、自定义数据结构的遍历实现。
备忘录模式(Memento)
定义:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,以便以后可以将该对象恢复到原先保存的状态。核心机制是原发器创建包含自身状态的备忘录对象,备忘录对象只对原发器可见,负责人存储备忘录对象,不修改备忘录的内容。
记忆口诀:保存状态可恢复。
典型应用场景:编辑器的撤销功能、游戏存档系统、数据库事务的快照实现。

11 种行为型模式分类与交互逻辑示意图,区分类模式与对象模式,展示每种模式的核心交互流程。
3.2 行为型模式对比与适用边界
相似模式区分:策略模式是对算法的封装,不同算法之间是平级可替换的;状态模式是对状态对应的行为的封装,不同状态之间有流转关系;责任链模式是对处理节点的封装,请求沿链传递直到被处理。模板方法模式是在父类中固定算法流程,子类实现可变步骤,属于静态的流程定义;策略模式是在运行时动态切换算法实现,属于动态的行为替换。
设计原则遵循:行为型模式普遍遵循迪米特法则,降低对象之间的直接耦合,其中策略、观察者、状态、命令等模式均遵循开闭原则,扩展新的行为或交互逻辑无需修改原有代码。
四、设计模式分类体系与核心考点
设计模式的分类维度有两个:一是目的维度,即模式用于解决什么问题,分为创建型、结构型、行为型三类;二是范围维度,即模式是处理类之间的关系还是对象之间的关系,分为类模式和对象模式两类,其中类模式基于继承关系实现,对象模式基于组合 / 关联关系实现。
4.1 设计模式分类总表(必背)
| 范围 \ 目的 | 创建型 | 结构型 | 行为型 |
|---|---|---|---|
| 类模式 | 工厂方法 | 适配器(类) | 解释器、模板方法 |
| 对象模式 | 抽象工厂、生成器、原型、单例 | 适配器(对象)、桥接、组合、装饰、外观、享元、代理 | 责任链、命令、迭代器、中介者、备忘录、观察者、状态、策略、访问者 |
4.2 核心考点梳理
分类属性考点:考生需准确记忆每种模式所属的目的类别和范围类别,特别是唯一的 4 种类模式(工厂方法、类适配器、解释器、模板方法)是高频考点。
适用场景考点:考试中通常给出业务场景描述,要求选择最适合的设计模式,考生需要掌握每种模式的核心特征和典型应用场景,重点区分相似模式的适用边界。
核心角色考点:部分考题会考察模式的核心角色功能,如适配器模式的目标接口、被适配者角色,观察者模式的主题和观察者角色等。

设计模式分类体系总表,标注高频考点和记忆要点,区分类模式和对象模式。
五、最佳实践与真题演练
5.1 记忆与答题最佳实践
记忆方法:可通过口诀串联记忆每种模式的核心特征,结构型模式口诀:"适桥组装外享代"(适配器、桥接、组合、装饰、外观、享元、代理);行为型模式口诀:"观策模责状命访,中迭备解"(观察者、策略、模板方法、责任链、状态、命令、访问者、中介者、迭代器、备忘录、解释器)。
答题技巧:场景题先提取核心特征,如出现 "接口不兼容" 优先考虑适配器模式,出现 "动态添加职责" 优先考虑装饰器模式,出现 "一对多通知" 优先考虑观察者模式,出现 "算法可替换" 优先考虑策略模式,出现 "请求沿链传递" 优先考虑责任链模式。分类题优先通过排除法判断,如属于类模式的只有 4 种,不符合的都属于对象模式。
5.2 典型真题解析
真题 1:在某系统中,不同级别的日志信息记录方式不同,每个级别的日志处理对象根据信息级别高低,采用不同方式进行记录。每个日志处理对象检查消息的级别,如果达到它的级别则进行记录,否则不记录;然后将消息传递给它的下一个日志处理对象。该设计模式采用( )模式,该模式属于( )模式。
A. 责任链 B. 策略 C. 行为型对象 D. 结构型对象
答案:A、C。解析:核心特征是请求沿多个处理对象组成的链传递,符合责任链模式的定义,责任链属于行为型对象模式。
真题 2:某旅游公司欲开发一套软件系统,要求能根据季节、节假日等推出不同的旅行定价包,如淡季打折、一口价等。实现该要求适合采用( )模式。
A. 策略模式 B. 状态模式 C. 观察者模式 D. 命令模式
答案:A。解析:核心特征是不同的定价算法可以相互替换,符合策略模式的定义,客户端可以根据场景动态切换定价策略。
真题 3:某系统需要为不同的第三方支付渠道提供统一的接入接口,屏蔽不同支付渠道的接口差异,使得业务代码无需修改即可对接新的支付渠道。该场景适合采用( )模式。
A. 适配器 B. 外观 C. 代理 D. 桥接
答案:A。解析:核心需求是将不同第三方支付的不兼容接口转换为业务系统期望的统一接口,符合适配器模式的定义。

设计模式答题逻辑流程图,展示从场景提取特征到模式匹配的判断步骤。
六、总结与建议
6.1 核心要点总结
结构型模式共 7 种,核心是处理类与对象的组合结构,除类适配器外均为对象模式,通过组合复用实现灵活的结构扩展。
行为型模式共 11 种,核心是处理对象间的交互与职责分配,除模板方法和解释器外均为对象模式,实现系统的松耦合交互。
设计模式分类的两个维度:目的维度分为创建型、结构型、行为型,范围维度分为类模式和对象模式,共 4 种类模式,其余均为对象模式。
考试核心考点包括模式的分类属性、适用场景、核心角色,其中场景题占比最高,需要重点区分相似模式的适用边界。
6.2 软考考试重点提示
高频考点:适配器、装饰器、代理、观察者、策略、模板方法、责任链、状态、命令模式是每年必考的高频模式,需重点掌握。
易错点:类模式与对象模式的区分、策略模式与状态模式的区分、适配器模式与外观模式的区分是常见易错点,考生需对比记忆核心特征。
答题技巧:场景题优先提取核心关键词,匹配对应模式的记忆口诀,分类题优先排除不属于对应类别的选项,提高答题准确率。
6.3 学习与实践建议
学习路径:先掌握每种模式的核心定义和典型应用场景,再对比相似模式的差异,最后通过真题练习巩固知识点,建议完成近 5 年软考真题中的设计模式相关题目。
掌握程度要求:能够根据场景准确判断适用的设计模式,能够准确记忆每种模式的分类属性,了解核心模式的角色组成和交互逻辑即可满足考试要求。
技术发展趋势:当前设计模式的应用逐渐与微服务、云原生等架构融合,如外观模式用于网关设计、策略模式用于多环境配置、观察者模式用于事件驱动架构,掌握模式的核心思想比记忆具体实现更重要。
设计模式是面向对象设计的精华,也是软考的高分考点,通过系统梳理和针对性练习,考生可以轻松攻克这一模块的知识点,为考试通过打下坚实基础。