您的位置:首页 > 运维架构 > 网站架构

备忘录模式

2014-11-12 17:27 197 查看
以下内容摘抄于《C#大话设计模式》

备忘录(Memento): 在不破坏封装性的前提下,捕获一个对象内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。

备忘录模式的结构图如下:



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

代码如下:

package com.schema.memento;

public class Memento {
private String state;

public String getState() {
return state;
}

public void setState(String state) {
this.state = state;
}
}

package com.schema.memento;

public class Originator {
public String state;

public void SetMemento(Memento memento){
state = memento.getState();
}

public Memento createMemento(){
Memento memento = new Memento();

memento.setState(state);

return memento;
}

public void Show(){
System.out.println("State=" + state);
}
}

package com.schema.memento;

public class Caretaker {
private Memento memento;

public Memento getMemento() {
return memento;
}

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

package com.schema.memento;

public class AppMain {
public static void main(String[] args) {
Originator originator = new Originator();

originator.state = "on";
originator.Show();

Caretaker caretaker = new Caretaker();

caretaker.setMemento(originator.createMemento());

originator.state = "off";
originator.Show();
originator.SetMemento(caretaker.getMemento());
originator.Show();
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息