定义:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。
备忘录模式有以下三个角色:
- Originator发起人角色
记录当前时刻的内部状态,负责定义哪些属于备份范围的状态,负责创建和恢复备忘录数据。
- Memento备忘录角色
负责存储Originator发起人对象的内部状态,在需要的时候提供发起人需要的内部状态。
- Caretaker备忘录管理员角色
对备忘录进行管理、保存和提供备忘录。
发起人角色:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| public class Originator{ private String state = ""; public String getState(){ return state; } public void setState(String state){ this.state = state; } public Memento createMemento(){ return new Memento(this.state); } public void restoreMemento(Memento _memento){ this.setState(_memento.getState()); } }
|
备忘录角色:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| public class Memento{ private String state = ""; public Memento(String _state){ this.state = _state; } public String getState(){ return state; } public void setState(String state){ this.state = state; } }
|
备忘录管理员角色:
1 2 3 4 5 6 7 8 9 10
| public class Caretaker{ private Memento memento; public Memento getMemento(){ return memento; } public void setMemento(Memento memento){ this.memento = memento; } }
|
现在看看是如何使用的:
1 2 3 4 5 6 7 8
| public class Client{ public static void main(String[] args){ Originator originator = new Originator(); Caretaker caretaker = new Caretaker(); caretaker.setMemento(originator.createMemento()); originator.restoreMemento(caretaker.getMemento); } }
|