备忘录模式介绍
- 一、基本介绍
- 二、代码实现
- 三、UML类图
- 四、备忘录模式小结
- 其他设计模式
一、基本介绍
备忘录模式(Memento Pattern)属于行为型模式,是指在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。
二、代码实现
(1)创建原始对象类和备忘录对象类
public class Originator {private String state;public String getState() {return state;}public void setState(String state) {this.state = state;}//保存一个状态对象public Memento saveStateMemento() {return new Memento(state);}//恢复状态对象public void getStateFromMemento(Memento memento) {state = memento.getState();}
}
public class Memento {private String state;public Memento(String state) {super();this.state = state;}public String getState() {return state;}}
(2)创建管理备忘录类
public class Laker {private List<Memento> mementoList = new ArrayList<Memento>();public void add(Memento memento) {mementoList.add(memento);}public Memento get(int index) {return mementoList.get(index);}
}
(3)测试
public class Client {public static void main(String[] args) {Originator originator = new Originator();Laker laker = new Laker();originator.setState("状态#1");laker.add(originator.saveStateMemento());System.out.println("当前的状态是:" + originator.getState());originator.setState("状态#2");laker.add(originator.saveStateMemento());System.out.println("当前的状态是:" + originator.getState());//将originator恢复到状态1originator.getStateFromMemento(laker.get(0));System.out.println("当前的状态是:" + originator.getState());}}
三、UML类图

四、备忘录模式小结
- 给用户提供了一种可以恢复状态的机制,可以使用户能够比较方便地回到某个历史的状态。
- 实现了信息的封装,使得用户不需要关心状态的保存细节。
- 如果类的成员变量过多,每一次保存都会消耗一定的内存, 这个需要注意。
- 为了节约内存,备忘录模式可以和原型模式配合使用。
- 适用的应用场景:后悔药、游戏存档、数据库的事务管理。

















