# 设计模式 #5.6 Memento备忘录,行为型模式
在您提供的备忘录模式的笔记中,已经很好地概述了该模式的主要概念和参与者。为了进一步优化这些笔记,我们可以确保术语的一致性,并清晰地定义每个组件的作用。以下是优化后的笔记内容:
(图片来源网络,侵删)
备忘录模式(Memento Pattern)
定义:
备忘录模式是一种行为型设计模式,它允许在不破坏对象封装性的情况下捕获对象的内部状态,并将该状态外部化存储,以便在需要时可以恢复到原先的状态。此模式常用于实现撤销操作和历史记录功能。
参与者:
-
Memento(备忘录):
- 存储 Originator(原发器)对象的内部状态。
- 保护其内容不被除 Originator 之外的任何对象直接访问。
- 为 Originator 提供一个窄接口,允许它访问和恢复状态。
- 原发起能够看到一个宽接口,允许他访问返回到先前状态所需的所有数据。
- 理想状态:只允许生成备忘录的那个原发器访问本备忘录的内部状态。
-
Originator(原发器):
- 创建 Memento 对象以保存当前状态。
- 可以利用 Memento 对象恢复之前保存的状态。
-
Caretaker(负责人):
- 负责保存 Memento 对象。
- 不能对 Memento 的内容进行操作或检查,以维护封装性。
示例(Python)
以下是使用 Python 语言实现的备忘录模式示例:
class Originator: def __init__(self): self._state = None def set_state(self, state): self._state = state def get_state(self): return self._state def save_to_memento(self): # 创建备忘录,保存当前状态 return Memento(self._state) def restore_from_memento(self, memento): # 从备忘录恢复状态 self._state = memento.get_state() class Memento: def __init__(self, state): self._state = state def get_state(self): # 仅供 Originator 使用 return self._state class Caretaker: def __init__(self): self._memento = None def save_memento(self, memento): # 保存备忘录 self._memento = memento def retrieve_memento(self): # 检索备忘录 return self._memento # 客户端代码 if __name__ == "__main__": originator = Originator() originator.set_state("State #1") caretaker = Caretaker() # 保存状态到备忘录 caretaker.save_memento(originator.save_to_memento()) # 更改状态 originator.set_state("State #2") print(f"Current State: {originator.get_state()}") # 输出: Current State: State #2 # 从备忘录恢复状态 originator.restore_from_memento(caretaker.retrieve_memento()) print(f"Restored State: {originator.get_state()}") # 输出: Restored State: State #1
免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!