您的位置:首页 > 编程语言 > Java开发

JAVA-设计模式之备忘录模式

2013-08-14 13:49 585 查看


package caosc.javaModel.Memento;
//发起者
public class Originator {

private String status;

public String getStatus() {
return status;
}

public void setStatus(String status) {
this.status = status;
}

public Memento createMemento(){
return new Memento(status);
}

public void cancelMemento(Memento me){
this.status = me.getStatus();
}
}
package caosc.javaModel.Memento;

public class Memento {
private String status;

public Memento(String status){
this.status = status;
}
public String getStatus() {
return status;
}

public void setStatus(String status) {
this.status = status;
}

}


package caosc.javaModel.Memento;
//管理者
public class CareTaker {
private Memento memento;

public Memento getMemento() {
return memento;
}

public void setMemento(Memento memento) {
this.memento = memento;
}
}
package caosc.javaModel.Memento;

public class MementoTest {

/**
* @param args
*/
public static void main(String[] args) {
Originator og = new Originator();//发起者
og.setStatus("on");
System.out.println(og.getStatus());

CareTaker ct  = new CareTaker();
ct.setMemento(og.createMemento());//隐藏Originator的细节实现

og.setStatus("off");
System.out.println(og.getStatus());

og.cancelMemento(ct.getMemento());//恢复原始状态
System.out.println(og.getStatus());
}

}


何时使用备忘录模式:

1、备忘录模式比较适用功能比较复杂,需要维护或者记录属性历史的类,或者需要保存的属性是众多属性中的很小部分,Originator可以根据保存的Memento信息还原到前一状态

2、如果在程序的使用到命令模式的撤销功能,那么可以用备忘录模式存储可撤销操作的状态;

3、当角色的状态改变时,有可能这个状态无效,这个时候可以使用暂时存储的Memento将状态复原;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: