备忘录模式说白了就是把程序当时的状态记录下来,等到合适的时候就能读取当时的记录,重新返回当时的状态,就和我们玩游戏的存档机制是一样的。理解了这一点,其他就没有太多好说的了,但是现在的程序中想要保存状态并不容易,而且目前无状态更受推崇。下面就简要介绍一下这个模式的特点吧。
备忘录模式中的角色:
Originator(生成者):负责生成或者恢复Memento
Memento(纪念品、备忘录):Memento 角色会将 Originator 角色的内部信息整合在一起。通过宽、窄接口控制信息的访问。
wide interface -- 宽接口:指所有用于获取恢复对象状态信息的方法的集合,供Originator 使用
narrow interface -- 窄接口:有限的内部信息,防止信息泄露,供 Caretaker 使用
Caretaker(负责人):通过 Originator 获取Memento,并保存
优点:
如果封装,Memento通过避免暴露仅由始发者管理的信息来保留边界。 但是,正如我们在代码示例中看到的那样,它应该存储在发起者之外。 我们将其存储在看守对象中。
记忆设计模式允许我们通过看守者维护状态列表来使代码在客户端保持简单。
将保存的状态保持在关键对象之外有助于保持凝聚力。
它为实现应用程序的恢复/撤消功能提供了一种简便的方法。
缺点:
如果发起者必须复制大量信息以存储在内存中,则内存可能会导致大量使用内存。
在大多数语言(例如JavaScript)中,使用记忆设计模式并不是一个简单的主意。 很难确保只有始发者才能访问纪念品的状态。
综上所述:
Memento设计模式有两个目标:
一种是保存系统关键对象的重要状态。
另一个是维护关键对象的封装。
网友评论