版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
备忘录模式
UML
解释说明
- 备忘录模式:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,之后可在需要的时候将对象恢复到原先保存的状态。
- Originator:发起者;Memento:备忘录;Caretaker:管理者。
代码实现
- Memento.class
package learn14;
public class Memento {
private String state;
public Memento(String state) {
this.state = state;
}
//只提供读取的接口,不提供修改的接口!
public String getState() {
return state;
}
}
- Originator.class
package learn14;
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(state);
}
public void setMemento(Memento memento) {
state = memento.getState();
}
public void show() {
System.out.println("State: " + state);
}
}
- Caretaker.class
package learn14;
public class Caretaker {
private Memento memento;
public Memento getMemento() {
return memento;
}
public void setMemento(Memento memento) {
this.memento = memento;
}
}
- Main.class
import learn14.*;
public class Main {
public static void main(String[] args) throws Exception {
//初始化发起者
Originator o = new Originator();
o.setState("X");
o.show();
//保存状态
Caretaker c = new Caretaker();
c.setMemento(o.createMemento());
//改变发起者状态
o.setState("Y");
o.show();
//还原发起者状态
o.setMemento(c.getMemento());
o.show();
}
}
参考资料
- 大话设计模式