【面向对象】设计模式概述(要素、分类:创建型/结构型/行为型)

考点频率 :★★★★★(选择题必考,设计模式分类与要素是面向对象技术板块的核心基础)

难度 :⭐⭐

建议:重点掌握23种设计模式的三大分类、各类包含哪些具体模式、设计模式的四个基本要素

1️⃣ 什么是设计模式?

设计模式(Design Pattern) 是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。它不是可以直接复用的代码,而是解决特定问题的最佳实践方案------类似于建筑行业里的"标准施工图集"。

打个比方:你盖房子遇到"怎么在墙上开窗又不影响承重"的问题,不需要每次自己从头研究。建筑行业已经有成熟的"窗洞加固方案"可以直接参考。设计模式就是软件行业的"标准施工方案"------遇到重复出现的设计问题,直接套用成熟模式即可。

设计模式的价值:

  • 可重用代码:避免重复造轮子
  • 提高可理解性:模式名称本身就是一种沟通语言(你说"用了单例模式",大家都懂)
  • 保证可靠性:经过实践验证的成熟方案

1995年,Erich Gamma等四位作者(被称为"GoF",Gang of Four,四人组)出版了《设计模式:可复用面向对象软件的基础》一书,总结了23种经典设计模式。这23种模式是软考考查的核心范围。

2️⃣ 设计模式的四个基本要素(软考高频考点)

GoF在书中指出,任何一个设计模式都包含四个基本要素:

要素 含义 软考怎么考?
模式名称(Pattern Name) 模式的标识名称,用于描述模式解决的问题和解决方案 选择题中给出场景,让你选出对应的模式名称
问题(Problem) 模式应该在何时使用,描述需要解决的设计问题 理解每个模式适用的场景
解决方案(Solution) 模式设计的核心内容,包括类、对象、接口、继承、组合等设计元素的关系 理解模式的结构,如类图
效果(Consequences) 模式应用后的效果,包括优缺点、适用性、对其他系统部分的影响 分析模式带来的利弊

记忆口诀 :"名问解效"------模式名称、问题、解决方案、效果。

3️⃣ 设计模式的三大分类(核心考点)

根据模式用来完成什么工作(目的) ,GoF将23种设计模式分为三大类:

分类 英文 核心作用 数量 一句话理解
创建型 Creational 对象的创建 5种 "怎么造对象"
结构型 Structural 类与对象的组合 7种 "怎么拼结构"
行为型 Behavioral 对象间的交互与职责分配 11种 "怎么分工协作"

总计:5 + 7 + 11 = 23种

3.1 创建型模式(Creational Patterns)------ 5种

核心作用 :将对象的创建 与对象的使用 分离,解耦实例化过程。你不是直接用 new 去创建对象,而是通过某种机制去获得对象。

模式名称 一句话理解
单例模式(Singleton) 一个类只有一个实例,提供全局访问点
工厂方法模式(Factory Method) 定义一个创建对象的接口,子类决定实例化哪个类
抽象工厂模式(Abstract Factory) 创建一系列相关或依赖的对象,无需指定具体类
建造者模式(Builder) 分步骤构建一个复杂对象
原型模式(Prototype) 通过复制现有实例来创建新对象

软考记忆 :"单工抽建原"------单例、工厂方法、抽象工厂、建造者、原型。

3.2 结构型模式(Structural Patterns)------ 7种

核心作用 :将类或对象组合成更大的结构,简化设计并提高代码复用性。

模式名称 一句话理解
适配器模式(Adapter) 将一个类的接口转换成客户期望的另一个接口
桥接模式(Bridge) 将抽象部分与实现部分分离,使它们可以独立变化
组合模式(Composite) 将对象组合成树形结构表示"整体-部分"层次
装饰器模式(Decorator) 动态地给对象添加额外职责
外观模式(Facade) 为子系统提供统一的接口
享元模式(Flyweight) 共享大量细粒度对象
代理模式(Proxy) 为其他对象提供代理以控制访问

软考记忆 :"适桥组装外享代"------适配器、桥接、组合、装饰器、外观、享元、代理。

3.3 行为型模式(Behavioral Patterns)------ 11种

核心作用 :描述对象之间如何交互、如何分配职责。

模式名称 一句话理解
观察者模式(Observer) 对象状态改变时,通知所有依赖者
模板方法模式(Template Method) 定义算法骨架,具体步骤由子类实现
命令模式(Command) 将请求封装成对象
状态模式(State) 内部状态改变时行为也随之改变
策略模式(Strategy) 定义算法族,让它们可以互相替换
职责链模式(Chain of Responsibility) 将请求沿链条传递,直到被处理
访问者模式(Visitor) 将操作应用到一组对象上,解耦操作和对象
迭代器模式(Iterator) 顺序访问集合对象中的元素
中介者模式(Mediator) 用中介对象封装一系列对象交互
备忘录模式(Memento) 捕获对象的内部状态并保存
解释器模式(Interpreter) 定义语言的文法表示并解释

软考记忆 :"观模命状策,职访迭中备解"------观察者、模板方法、命令、状态、策略、职责链、访问者、迭代器、中介者、备忘录、解释器。

4️⃣ 另一种分类维度:类模式 vs 对象模式

除了按"目的"分类,设计模式还可以按"作用范围"分为两类:

分类 核心特征 数量 包含的模式
类模式(Class Pattern) 处理类与子类 之间的关系,通过继承 建立,编译时确定,静态的 4种 工厂方法、模板方法、(类)适配器、解释器
对象模式(Object Pattern) 处理对象之间 的关系,通过组合/聚合 建立,运行时可变,动态的 19种 其余19种(含对象适配器)

软考提示 :虽然存在"类模式 vs 对象模式"的分类方式,但软考中最常考的还是创建型/结构型/行为型三分法。前者了解即可,后者必须熟练掌握。

5️⃣ 经典例题

例题1:以下关于设计模式的说法中,正确的是( )。

A. 设计模式是可以直接复用的代码

B. 设计模式包含四个基本要素:模式名称、问题、解决方案、效果

C. 设计模式只有创建型和结构型两种

D. GoF总结了100种设计模式

解析 :A错误------设计模式是设计经验的总结 ,不是可直接复用的代码;B正确;C错误------分为创建型、结构型、行为型 三种;D错误------GoF总结了23种 。选 B。


例题2:以下哪个设计模式属于创建型模式?

A. 适配器模式

B. 观察者模式

C. 工厂方法模式

D. 代理模式

解析 :适配器、代理属于结构型;观察者属于行为型;工厂方法属于创建型 。选 C。


例题3:某系统需要在不改变原有类的情况下,动态地给对象添加额外的功能。以下哪个设计模式最适合?

A. 单例模式

B. 装饰器模式

C. 策略模式

D. 工厂方法模式

解析 :"动态地给对象添加额外功能"是装饰器模式 的典型应用场景。选 B。

6️⃣ 记忆口诀

设计模式二十三,创建结构行为三。

创建五兄弟:单工抽建原(单例、工厂、抽象、建造、原型)

结构七兄弟:适桥组装外享代(适配、桥接、组合、装饰、外观、享元、代理)

行为十一兄弟:观模命状策,职访迭中备解(观察、模板、命令、状态、策略、职责链、访问者、迭代、中介、备忘录、解释)

7️⃣ 小测验(评论区对答案)

  1. 设计模式的四个基本要素是( )。

    A. 名称、问题、解决方案、效果

    B. 名称、类、对象、接口

    C. 创建型、结构型、行为型、类模式

    D. 封装、继承、多态、抽象

  2. 以下哪个设计模式属于行为型模式?

    A. 单例模式

    B. 代理模式

    C. 策略模式

    D. 桥接模式

🔔 本专栏日更,点击头像 → 专栏《软考中级高频考点》订阅,第一时间接收新内容

#软考中级 #软件设计师 #设计模式 #创建型模式 #结构型模式 #行为型模式 #软考备考

相关推荐
Li_RuiQi11 小时前
DAgger方法演进_独立学习笔记
笔记·学习·计算机视觉
Li_RuiQi15 小时前
DAgger与交互式模仿学习_ACT学习笔记
笔记·学习
He BianGu15 小时前
【笔记】C# 中BindingFlags的详细作用
笔记·c#
AI视觉网奇15 小时前
turtle 入门教程笔记
笔记
跨知易知识产权16 小时前
美国专利确权是什么,和专利诉讼有什么不一样?
笔记
杨逢昌工厂6S管理16 小时前
126-杨逢昌6S三环体系:越做越乱的现场熵增机理与基准化治理——一线现场诊断笔记
经验分享·笔记·职场和发展·学习方法
悟道书生16 小时前
若依 RBAC 权限控制学习笔记
java·网络·笔记·sql·学习·vue
陈哈哈111117 小时前
折腾了半天,总算把 Vim 9.2 装明白了
笔记
陈哈哈111117 小时前
折腾了半天,总算把 OpenGL 的开发环境给装明白了
笔记
深圳老胡18 小时前
STM32F103 硬件 SPI 与软件 IO 模拟 SPI 最高速度差异详解
笔记·stm32·单片机·代码规范·1024程序员节