1700470678
设计模式之禅 24.2 备忘录模式的定义
1700470679
1700470680
备忘录模式(Memento Pattern)提供了一种弥补真实世界缺陷的方法,让“后悔药”在程序的世界中真实可行,其定义如下:
1700470681
1700470682
Without violating encapsulation,capture and externalize an object’s internal state so that the object can be restored to this state later.(在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。)
1700470683
1700470684
通俗地说,备忘录模式就是一个对象的备份模式,提供了一种程序数据的备份方法,其通用类图如图24-4所示。
1700470685
1700470686
1700470687
1700470688
1700470689
图24-4 备忘录模式的通用类图
1700470690
1700470691
我们来看看类图中的三个角色。
1700470692
1700470693
❑Originator发起人角色
1700470694
1700470695
记录当前时刻的内部状态,负责定义哪些属于备份范围的状态,负责创建和恢复备忘录数据。
1700470696
1700470697
❑Memento备忘录角色
1700470698
1700470699
负责存储Originator发起人对象的内部状态,在需要的时候提供发起人需要的内部状态。
1700470700
1700470701
❑Caretaker备忘录管理员角色
1700470702
1700470703
对备忘录进行管理、保存和提供备忘录。
1700470704
1700470705
备忘录模式的通用代码也非常简单,我们先看发起人角色,如代码清单24-8所示。
1700470706
1700470707
代码清单24-8 发起人角色
1700470708
1700470709
public class Originator{
1700470710
1700470711
//内部状态
1700470712
1700470713
private String state=””;
1700470714
1700470715
public String getState(){
1700470716
1700470717
return state;
1700470718
1700470719
}
1700470720
1700470721
public void setState(String state){
1700470722
1700470723
this.state=state;
1700470724
1700470725
}
1700470726
[
上一页 ]
[ :1.700470677e+09 ]
[
下一页 ]