《Java设计模式及实践》—3.7 备忘录模式
3.7 备忘录模式
封装是面向对象设计的基本原则之一。我们知道每个类都承担一项职责。当向对象添加功能时,我们可能意识到需要保存其内部状态,以便能够在以后阶段恢复它。如果直接在类中实现这样的功能,这个类可能会变得太复杂,最终可能会违反单一职责原则。同时,封装阻止我们直接访问需要记忆的对象的内部状态。
1.目的
备忘录模式用于保存对象的内部状态而不破坏其封装,并在以后阶段恢复其状态。
2.实现
备忘录模式依赖于三个类—Originator、Memento和Caretaker,如图3-8所示。
图 3-8
备忘录模式依赖于以下类:
Originator(发起者):发起者是我们需要记住状态的对象,以便在某个时刻恢复它。
Caretaker(管理者):这是负责触发发起者的变化或触发发起者返回先前状态的动作的类。
Memento(备忘录):这是负责存储发起者内部状态的类。备忘录提供了两种设置和获取状态的方法,但这些方法应该对管理者隐藏。
备忘录实际上比听起来容易得多。我们将它应用于汽车服务应用程序。机械师必须测试每辆车。他们使用自动装置测量汽车的所有输出,以获得不同的参数(速度、挡位、制动器等)。他们执行所有测试并且必须重新检查那些看起来可疑的测试。
首先创建originator类,我们将它命名为CarOriginator,添加两个成员变量。state表示测试运行时汽车的参数,这是我们想要保存的对象的状态。第二个成员变量是结果,这是汽车的测量输出,我们不需要将其存储在备忘录中。这是带有空嵌套备忘录的发起者:
现在我们为不同的状态运行汽车测试:
3.适用情况
只要需要执行回滚操作,就会使用备忘录模式。它可用于各种原子事务,如果其中一个操作失败,则必须将对象恢复到初始状态。
- 点赞
- 收藏
- 关注作者
评论(0)