备忘录模式
一. 备忘录模式
1.1 定义
- 在不破坏封闭性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态.
1.2 角色
- 备忘录(Memento):用于存储发起者对象的内部状态.
- 发起者(Orginator):创建备忘录,记录或恢复自身状态.
- 管理者(CareTaker):负责管理备忘录.
二. 具体实现
2.1 创建备忘录类
public class Memento {
private String state;
public Memento(String state){
this.state = state;
}
public String getState() {
return state;
}
}
2.2 创建发起者类
public class Originator {
private String state;
public void setState(String state) {
System.out.println("state changed : " + state);
this.state = state;
}
public Memento save(){
return new Memento(state);
}
}
2.3 创建管理者类
public class CareTaker {
private Memento memento;
public void save(Memento memento){
System.out.println("Memento save ..." + memento.getState());
this.memento = memento;
}
public Memento read(){
System.out.println("Memento read ..." + memento.getState());
return memento;
}
}
2.4 调用
public static void main(String[] args) {
Originator originator = new Originator();
CareTaker careTaker = new CareTaker();
originator.setState("1");
careTaker.save(originator.save());
originator.setState("2");
careTaker.read();
}
2.5 输出
state changed : 1
Memento save ...1
state changed : 2
Memento read ...1
三. 优缺点
3.1 优点
- 可以恢复到之前的状态.
3.2 缺点
- 耗费资源.
四. 源码
https://github.com/Seasons20/DisignPattern.git
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。