/*
*备忘录模式(Memento)
*备忘录对象用来存储另一个对象的快照对象,保存其内部状态,使得可以随时恢复。
* 备忘录角色:保存发起人对象的内部状态,保护内容不被除发起人对象之外的对象获取。
* 窄接口:负责人对象和其他对象看到的接口,只允许把备忘录对象传给其他对象。
* 宽接口:发起人能看到的接口,允许读取内部状态。
* 发起人角色:创建并使用备忘录对象来保存其状态 负责人角色:负责保存备忘录对象。
* 白箱实现:备忘录类对其他类也可见,这样发起人的状态可能会存在安全问题。
* 黑箱实现:把备忘录类作成发起人的内部类,对外提供一个标识接口。
*/
package model;
public class TestMemento {
public static void main(String[] args) {
Originator ori = new Originator();
Caretaker c = new Caretaker();
ori.setState("State 1");
IFMemento m = ori.createMemento();
c.save(m);
ori.setState("State 2");
m = c.retrieve();
ori.restore(m);
System.out.println("Now State:" + ori.getState());
}
}
class Originator {
String state;
public void setState(String s) {
state = s;
System.out.println("State change to: " + s);
}
public String getState() {
return this.state;
}
public IFMemento createMemento() {
return new Memento(state);
}
public void restore(IFMemento m) {
Memento mt = (Memento) m;
this.state = mt.getState();
}
private class Memento implements IFMemento {
private String state;
public Memento(String s) {
this.state = s;
}
public String getState() {
return this.state;
}
}
}
class Caretaker {
private IFMemento m;
public IFMemento retrieve() {
return this.m;
}
public void save(IFMemento m) {
this.m = m;
}
}
interface IFMemento {
}
设计模式==备忘录模式(Memento)
最新推荐文章于 2025-09-05 00:20:52 发布
本文介绍了备忘录设计模式的概念及其实现方式。通过实例演示了如何使用备忘录模式来保存和恢复对象的状态,包括备忘录角色、发起人角色和负责人角色的功能介绍。
&spm=1001.2101.3001.5002&articleId=83889838&d=1&t=3&u=9a395b78853c4e3680a84ec0c3238f5c)
1万+

被折叠的 条评论
为什么被折叠?



