快捷搜索:

Java设计模式-----Memento备忘录模式

源自:http://www.blogjava.net/flustar/archive/2007/12/08/memento.html

Memento备忘录模式:

在不破坏封装的条件下,捕获一个工具的内部状态,并在该工具之外保存这个状态。这样就可以将该工具规复到本来保存前的状态。

例子:

view plaincopy to clipboardprint?

package memento;

public class Memento {

private String state;

public Memento(String state) {

this.state = state;

}

public String getState() {

return state;

}

public void setState(String state) {

this.state = state;

}

}

package memento;

public class WindowsSystem {

private String state;

public Memento createMemento() { // 创建系统备份

return new Memento(state);

}

public void restoreMemento(Memento m) { // 规复系统

this.state = m.getState();

}

public String getState() {

return state;

}

public void setState(String state) {

this.state = state;

System.out.println("当前系统处于" + this.state);

}

}

package memento;

public class User {

private Memento memento;

public Memento retrieveMemento() { // 规复系统

return this.memento;

}

public void saveMemento(Memento memento) { // 保存系统

this.memento = memento;

}

}

package memento;

public class Client {

public static void main(String[] args) {

WindowsSystem Winxp = new WindowsSystem(); // Winxp系统

User user = new User(); // 某一用户

Winxp.setState("好的状态"); // Winxp处于好的运行状态

user.saveMemento(Winxp.createMemento()); // 用户对系统进行备份,Winxp系统要孕育发生备份文件

Winxp.setState("坏的状态"); // Winxp处于不好的运行状态

Winxp.restoreMemento(user.retrieveMemento()); // 用户发规复敕令,系统进行规复

System.out.println("当前系统处于" + Winxp.getState());

}

}

您可能还会对下面的文章感兴趣: