某绘图软件希望在不暴露图形对象内部细节的情况下,保存对象当前状态,便于用户执行撤销操作时恢复到之前的状态。较适合采用的设计模式是()。
备忘录模式用于在不破坏封装的前提下捕获并保存对象内部状态,以便之后恢复。题干强调保存当前状态、撤销时恢复、又不暴露对象内部细节,这正是备忘录模式的典型意图。适配器解决接口不兼容,责任链解决请求沿链传递,享元解决大量细粒度对象共享。
选项分析
正确。备忘录模式适合保存对象状态并在需要时恢复,同时尽量不暴露内部实现。
错误。适配器模式用于把不兼容接口转换为目标接口。
错误。责任链模式用于多个处理者沿链处理请求。
错误。享元模式用于共享大量细粒度对象,减少内存开销。
本题为什么容易错
这题容易被“撤销操作”带到命令模式。命令模式确实常用于撤销,但它更关注操作请求的封装和历史记录;备忘录模式关注对象状态快照。题干没有强调命令队列,而是强调保存状态,所以选备忘录。
简短答案
备忘录模式为什么适合保存和恢复对象状态,正确答案是 A(备忘录模式)。备忘录模式用于在不破坏封装的前提下捕获并保存对象内部状态,以便之后恢复。题干强调保存当前状态、撤销时恢复、又不暴露对象内部细节,这正是备忘录模式的典型意图。适配器解决接口不兼容,责任链解决请求沿链传递,享元解决大量细粒度对象共享。
易混淆概念对比表
| 概念 | 本题判断 | 区别要点 | 记忆提示 |
|---|---|---|---|
| 备忘录模式 | 本题正确答案 | 正确。备忘录模式适合保存对象状态并在需要时恢复,同时尽量不暴露内部实现。 | 看到题干核心场景时优先联想到它 |
| 适配器模式 | 本题干扰项 | 错误。适配器模式用于把不兼容接口转换为目标接口。 | 看到该词不要急着选,先判断是否真正解决题干问题 |
| 责任链模式 | 本题干扰项 | 错误。责任链模式用于多个处理者沿链处理请求。 | 看到该词不要急着选,先判断是否真正解决题干问题 |
| 享元模式 | 本题干扰项 | 错误。享元模式用于共享大量细粒度对象,减少内存开销。 | 看到该词不要急着选,先判断是否真正解决题干问题 |
本题易混淆选项怎么区分
- 适配器模式:错误。适配器模式用于把不兼容接口转换为目标接口。
- 责任链模式:错误。责任链模式用于多个处理者沿链处理请求。
- 享元模式:错误。享元模式用于共享大量细粒度对象,减少内存开销。
知识点详解
备忘录模式通常包含发起人、备忘录和管理者几个角色。发起人创建状态快照,管理者保存快照但不直接修改其内部内容,需要恢复时再交回发起人。考试不一定要求你写类图,但会用“状态保存”“恢复”“封装”这几个信号考模式意图。真实系统里还要考虑快照数量、存储成本和恢复粒度。
备考速记
速记:命令记操作,备忘录记状态;要恢复旧状态,就看备忘录。
对象状态在对象状态场景中的作用
对象状态在本题中的核心价值,是解决“某绘图软件希望在不暴露图形对象内部细节的情况下,保存对象当前状态,便于用户执行撤销操作时恢复到之前的状态。较适合采用的设计模式是()”这个场景问题。复习时不要只背选项名称,还要理解它为什么适用于该场景,以及它能解决哪类安全、流程或管理问题。
同类题怎么考
- 给出对象状态场景,判断应该选择哪个概念、工具、协议或管理过程。
- 考查对象状态的作用,要求从四个相近选项中找出最符合题干目标的一项。
- 把对象状态和适配器模式、责任链模式、享元模式放在一起考,重点看适用场景是否一致。
- 题干通常会出现一个关键动作或目标,先定位关键词,再回到选项逐一排除。
对象状态在软件设计师软考中的考法
软考选择题通常不会只考概念定义,还会把对象状态放到对象状态场景中,要求判断它的作用、适用范围或与相近概念的区别。遇到这类题时,先抓住题干中的业务场景,再看哪个选项最能解决该场景下的核心问题。
解题思路
这题要看撤销靠什么实现。如果题干强调“把一次操作封装成命令并记录历史”,更像命令模式;如果强调“保存对象某一时刻状态,之后恢复回来”,更像备忘录模式。本题明显落在保存和恢复状态上。
考点定位
备忘录模式的题眼是保存对象状态、以后恢复、不破坏封装。它和命令模式都可能出现在撤销题里,但命令更强调把操作请求对象化。
易错提醒
- 为了保存状态直接暴露对象所有内部字段,破坏封装。
- 把每一步状态都无限保存,导致内存占用过高。
- 看到撤销就固定选命令模式,没有看题干强调的是操作还是状态。
备考提示
- 设计模式题要先看意图,不要只看关键词。撤销题可能考命令,也可能考备忘录。
- 看到状态快照、恢复到之前状态、不暴露内部细节,优先想到备忘录模式。
- 把命令模式、备忘录模式、原型模式放在一起比较:命令保存操作,备忘录保存状态,原型复制对象。
你可能还想了解
- 备忘录模式为什么适合保存和恢复对象状态?
- 对象状态是什么?
- 对象状态在软件设计师考试中怎么考?
- 软件设计师对象状态题怎么理解?
- 备忘录模式适合什么场景怎么考?
- 备忘录模式和命令模式区别怎么考?
本文小结
本题核心考点是对象状态在对象状态场景中的判断和应用。遇到类似题目时,先看题干描述的目标,再判断哪个选项最符合场景;本题应选择 A(备忘录模式)。