当前位置:网站首页 > 技术博客 > 正文

备忘录设计图



博主介绍: ✌博主从事应用安全和大数据领域,有8年研发经验,5年面试官经验,Java技术专家✌

Java知识图谱点击链接:体系化学习Java(Java面试专题)

💕💕 感兴趣的同学可以收藏关注下不然下次找不到哟💕💕

在这里插入图片描述

备忘录模式(Memento Pattern)是一种行为型设计模式,它允许在不暴露对象内部状态的情况下捕获和恢复对象的内部状态。备忘录模式通过在对象中创建一个备忘录对象,用于保存对象的状态,并在需要时将对象恢复到之前的状态。

备忘录模式的核心思想是将对象的状态封装到备忘录对象中,通过将备忘录对象保存在一个管理者对象中,实现对对象状态的保存和恢复。这样可以实现对象状态的撤销、重做、历史记录等功能。

备忘录模式的优点包括:

  1. 备忘录模式可以实现对象状态的保存和恢复,使得对象的状态变化具有可追溯性,可以方便地进行撤销和重做操作。
  2. 备忘录模式可以将对象的状态封装在备忘录对象中,从而保持了对象的封装性,不会暴露内部状态给外部对象。
  3. 备忘录模式可以在不破坏对象封装性的前提下,捕获和保存对象的内部状态,使得对象可以在不同的时间点恢复到之前的状态。

备忘录模式的缺点包括:

  1. 如果需要保存的对象状态较多或者状态变化频繁,备忘录模式会消耗较多的内存资源。
  2. 如果需要保存的对象状态较复杂,备忘录模式可能会增加代码的复杂性和维护成本。
  3. 如果对象的状态需要保密或者访问权限受限,备忘录模式可能会破坏对象的封装性。

总体来说,备忘录模式适用于需要保存和恢复对象状态的场景,特别是在需要实现撤销、重做、历史记录等功能时。但是在使用时需要权衡内存消耗和代码复杂性。

备忘录模式适用于以下场景:

  1. 需要保存和恢复对象状态的情况:当需要保存对象的某个状态,并在需要时将对象恢复到该状态时,可以使用备忘录模式。例如,文本编辑器中的撤销和重做功能,可以使用备忘录模式来保存文本的不同版本状态。
  2. 需要实现撤销、重做或者历史记录功能的情况:备忘录模式可以用于实现撤销、重做或者历史记录功能。例如,图形绘制软件中的撤销和重做功能,可以使用备忘录模式来保存不同绘制步骤的状态,以便在需要时进行恢复。
  3. 需要实现对象状态的快照功能的情况:备忘录模式可以用于实现对象状态的快照功能,即在某个时间点保存对象的状态,并在需要时恢复到该状态。例如,游戏中的存档功能,可以使用备忘录模式来保存游戏进度的快照。
  4. 需要实现多级撤销功能的情况:备忘录模式可以支持多级撤销功能,即可以保存多个状态,并按照一定的顺序进行恢复。例如,文档编辑软件中的多级撤销功能,可以使用备忘录模式来保存多个编辑操作的状态,并按照操作的顺序进行恢复。

总之,备忘录模式适用于需要保存和恢复对象状态、实现撤销、重做、历史记录等功能的场景。它可以提高代码的可维护性和灵活性,同时保持对象的封装性。

备忘录模式的结构包括以下几个角色:

  1. 发起人(Originator):负责创建备忘录对象,并可以使用备忘录对象来保存和恢复自身的状态。
  2. 备忘录(Memento):用于保存发起人对象的状态,可以包含发起人的部分或全部状态信息。
  3. 管理者(Caretaker):负责保存和管理备忘录对象,可以根据需要保存多个备忘录对象,并在需要时将其提供给发起人进行状态的恢复。

备忘录模式的基本流程如下:

  1. 发起人创建备忘录对象,并将自身的状态保存到备忘录对象中。
  2. 发起人将备忘录对象交给管理者进行管理,管理者可以保存多个备忘录对象。
  3. 在需要时,发起人可以从管理者那里获取备忘录对象,并使用备忘录对象来恢复自身的状态。

备忘录模式的结构图如下所示:

 

在这个结构中,发起人(Originator)通过调用createMemento()方法创建备忘录对象,并将自身的状态保存到备忘录对象中。备忘录对象(Memento)可以通过getState()方法获取发起人的状态,也可以通过setState()方法设置发起人的状态。管理者(Caretaker)负责保存和管理备忘录对象,可以通过addMemento()方法将备忘录对象添加到管理者中,并在需要时提供给发起人进行状态的恢复。

备忘录模式的原理是通过将对象的状态保存到备忘录对象中,以便在需要时可以将对象恢复到之前的状态。

具体原理如下:

  1. 发起人(Originator):发起人是需要保存状态的对象。当发起人需要保存当前状态时,会创建一个备忘录对象,并将自身的状态保存到备忘录对象中。
  2. 备忘录(Memento):备忘录对象用于保存发起人的状态。它可以包含发起人的部分或全部状态信息,但是对外部是不可见的,只有发起人能够访问备忘录对象的状态。
  3. 管理者(Caretaker):管理者负责保存和管理备忘录对象。它可以保存多个备忘录对象,可以根据需要进行备忘录的存储和提供。
  4. 客户端(Client):客户端通过与发起人和管理者进行交互来实现状态的保存和恢复。客户端可以通过发起人创建备忘录对象,并将备忘录对象交给管理者进行管理。在需要恢复状态时,客户端可以从管理者那里获取备忘录对象,并将其传递给发起人进行状态的恢复。

备忘录模式的核心思想是将对象的状态保存到备忘录对象中,从而实现状态的保存和恢复。这样可以使得对象在不破坏封装性的前提下,可以方便地保存和恢复状态,提高代码的可维护性和灵活性。

 
 
 
 

Originator类是发起人,负责保存和恢复状态。Memento类是备忘录,用于保存状态。Caretaker类是管理者,负责保存和管理备忘录。Client类是客户端,用于测试备忘录模式的使用。

运行以上代码,输出结果如下:

 

可以看到,通过备忘录模式,成功保存了发起人的状态,并在需要时恢复到之前的状态。
在这里插入图片描述

💕💕 本文由激流原创,首发于CSDN博客,博客主页 https://blog.csdn.net/_?spm=1010.2135.3001.5421
💕💕喜欢的话记得点赞收藏啊
在这里插入图片描述

版权声明


相关文章:

  • html表单属性有哪些2024-11-24 13:30:02
  • 桥接成功却无法上网2024-11-24 13:30:02
  • 86版五笔字型2024-11-24 13:30:02
  • vmware虚拟机版本不兼容2024-11-24 13:30:02
  • 王码五笔输入法86版的字根全面吗?2024-11-24 13:30:02
  • python基础入门教程2024-11-24 13:30:02
  • 测试cpu的性能指标2024-11-24 13:30:02
  • sigfpe信号2024-11-24 13:30:02
  • 生成树协议stp的主要作用2024-11-24 13:30:02
  • 预测模型的构建及应用2024-11-24 13:30:02