软件设计中的“后悔药”-备忘录模式

行为型模式的名称、定义、学习难度和使用频率如下表所示:

软件设计中的“后悔药”-备忘录模式_第1张图片

1.如何理解备忘录模式

  1. 备忘录模式(Memento Pattern):在不破坏封装的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样可以在以后将对象恢复到原先保存的状态。它是一种对象行为型模式,其别名为Token

  2. 在代码中,备忘录模式通常包含三个主要的角色:原发器(Originator)、备忘录(Memento)和负责人。原发器是需要保存和恢复状态的对象。备忘录用于存储原发器的内部状态。负责人则负责保存和获取备忘录。

  3. 备忘录模式在很多软件的使用过程中普遍存在,但是在应用软件开发中,它的使用频率并不太高,因为现在很多基于窗体和浏览器的应用软件并没有提供撤销操作。如果需要为软件提供撤销功能,备忘录模式无疑是一种很好的解决方案。在一些字处理软件图像编辑软件数据库管理系统等软件中备忘录模式都得到了很好的应用。

2.如何理解原发器、备忘录、负责人这三个角色?

  1. 原发器就像是一个有着各种状态和行为的主体。它在运行过程中,其状态可能会不断变化。比如在一个文档编辑的场景中,原发器可以是正在编辑的文档对象,它有内容、格式、光标位置等状态。当需要保存当前状态时,原发器会创建一个包含其当前关键状态信息的备忘录。

  2. 备忘录可以看作是原发器状态的一个 “快照” 或者 “副本”。它只包含原发器决定要保存的那些关键状态信息,而且这些信息通常是以一种不可直接修改的方式存储的,以保证其完整性和准确性。例如,在上述文档编辑的例子中,备忘录可能只包含文档的当前内容、一些主要格式设置等。

  3. 负责人的职责是保管备忘录。它不关心备忘录里具体的状态内容,只是按照一定的规则来保存和获取备忘录。比如,负责人可以决定在什么情况下保存备忘录(比如每隔一段时间、在执行特定操作之前等),以及在需要恢复时能够准确地提供之前保存的备忘录给原发器。

3.备忘录模式的优缺点是什么?

  1. 优点

    1. 保存和恢复状态的灵活性:能够方便地在需要的时候将对象恢复到之前的某个状态,提供了撤销、回滚等功能的有效实现方式。

    2. 解耦原发器和存储:原发器不需要关心状态是如何存储和管理的,这部分责任交给了负责人,使得原发器的职责更单一。

  1. 缺点

    1. 资源消耗:如果需要保存大量的备忘录或者备忘录本身占用较多资源,可能会导致较大的内存消耗。

    2. 增加复杂性:引入了额外的类(备忘录和负责人)和交互逻辑,使得系统的设计和实现变得相对复杂。

4.备忘录模式的适用场景

  1. 撤销和恢复操作:例如在文本编辑器、图形设计工具或游戏中,用户可能希望能够撤销之前的一系列操作并恢复到之前的某个状态。

  2. 事务处理:当进行一系列复杂的操作时,如果中途出现错误,可以回滚到事务开始前的状态。

  3. 缓存历史状态:在一些需要记录对象历史状态的系统中,比如用户配置的变更历史、系统参数的调整历史等。

  4. 流程控制:在工作流或业务流程中,某些节点可能需要根据之前的状态进行决策或回退。

以上内容为根据书本内容配合搜索引擎整理得来,目的是为了学习,要是有侵权的情况发生,请联系我,我会立即予以删除,谢谢!

一起成长,人生是马拉松,可以跑得慢,但一定要在路上。

你可能感兴趣的:(备忘录模式,设计模式,系统安全,软件需求,运维开发,个人开发)