架构师内功心法,参与富文本编辑器开发的备忘录模式详解
3 月,跳不动了?>>> 备忘录模式(Memento Pattern)又称为快照模式(Snapshot Pattern)或者令牌模式(Token Pattern),是指在不破坏封装的前提下,捕获一个内部状态,并在对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。 在软件系统中,备忘录模式为我们提供了一种“ 后悔药 ”的机制,它通过存储系统各个历史状态的快照,使得我们可以在任意时刻将系统回滚到某一个历史状态。 一、备忘录模式的应用场景 我们机会天天都在使用备忘录模式,比如使用Git、SVN提供一种代码版本撤回的功能。还有游戏的存档功能,通过将游戏当前进度存储到本地文件系统或数据库中,使得下次继续游戏时,玩家可以从之前的位置继续进行。 备忘录模式适用于以下两个场景: 需要保存历史快照的场景; 希望在对象之外保存状态,且除了自己其它类对象无法访问状态保存具体内容。 备忘录模式主要包含三种角色: 发起人角色(Orgainator):负责创建一个备忘录,记录自身需要保存的状态,具备状态回滚功能; 备忘录角色(Memento):用于存储发起人的内部状态,且可以防止发起人以外的对象进行访问; 备忘录管理员(Caretaker):负责存储,提供管理备忘录,无法对备忘录内容进行操作和访问。 1.1 利用压栈管理落地备忘录模式 我们在网页上写文章或者博客都使用过富文本编辑器