package com.test.DPs.XingWei.Memento;
/**
* 行为型:Memento-备忘录 外观:作用面为 对象
*/
class Original{
private String value;
public String getValue(){
return value;
}
public void setValue(String value){
this.value = value;
}
public Original(String value){
this.value = value;
}
public Memento createMemento(){
return new Memento(value);
}
public void restoreMemento(Memento memento){
this.value = memento.getValue();
}
}
class Memento{
private String value;
public Memento(String value){
this.value = value;
}
public String getValue(){
return value;
}
public void setValue(String value){
this.value = value;
}
}
class Storage{
private Memento memento;
public Storage(Memento memento){
this.memento = memento;
}
public Memento getMemento(){
return memento;
}
public void setMemento(Memento memento){
this.memento = memento;
}
}
/**
* 用途:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样以后就可将该对象恢复到原先保存的状态。
*
* 理解:类 似数学,先设 已知条件-未知数 x、y、z类:原对象-状态类-存储类
*/
class Test{
public static void main(String[] args) {
Original origi = new Original("egg"); // 创建原始类
Storage storage = new Storage(origi.createMemento()); // 创建备忘录
System.out.println("初始化状态为:" + origi.getValue()); // 修改原始类的状态
origi.setValue("niu");
System.out.println("修改后的状态为:" + origi.getValue());
origi.restoreMemento(storage.getMemento()); // 回复原始类的状态
System.out.println("恢复后的状态为:" + origi.getValue());
}
}