备忘录模式
一. 备忘录模式
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