首页 / 设计模式 / 设计模式 十三、备忘录模式
设计模式 十三、备忘录模式
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了设计模式 十三、备忘录模式,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2136字,纯文字阅读大概需要4分钟。
内容图文
备忘录 Memento 模式:
在不破坏封装性的前提下,捕获一个对象的内在状态,并在该对象之外保存这个状态。这样以后就可以将该对象恢复到原来的状态。
Originator 发起人:
负责创建一个备忘录 Memento 用以记录当前时刻它的内部状态,并可以使用备忘录恢复内部状态。
Originator 可根据需要决定 Memento 储存 Originator 的哪些内部状态。
Memento 备忘录:
负责存储 Originator 对象的内部状态, 并可防止 Originator 以外的其他对象访问备忘录 Memento ,备忘录有两个接口, Caretaker 只能看到窄接口,他只能将备忘录传递给其他对象, Originator可以看到宽接口,允许他访问返回到先前状态所需的所有数据。
Caretaker 管理者:
负责保存好备忘录 Memento ,不能对备忘录的内容进行操作或修改。
备忘录模式把要保存的细节封装在了 Memnto 中,哪一天要改细节也不需要影响客户端。
备忘录模式适用于功能比较复杂的,但需要维护或记录属性历史的类,或者需要保存的属性也只是众多属性中的一小部分时, Originator 可以根据保存的 Memento 信息还原到前一状态。
//备忘录
public class Memento {
private String state;
public Memento(String state) {
this.state = state;
}
public String getState() {
return state;
}
}
//管理者
public class Caretaker {
private Memento memento;
//得到或设置备忘录
public Memento getMemento() {
return memento;
}
public void setMemento(Memento memento) {
this.memento = memento;
}
}
//发起人 类
public class Originator {
private String state; //需要保存的属性,可以多个
public String getState() {
return state;
}
public void setState(String state) {
this.state = state;
}
//创建备忘录,将当前需要保存的信息导入并实例化出一个 Memento 对象
public Memento CreateMemento() {
return new Memento(state);
}
//恢复备忘录,将 Memento 导入并将相关数据恢复
public void SetMemnto(Memento memento) {
state = memento.getState();
}
public void Show() {
System.out.println(state);
}
public static void main(String[] args) {
//初始化发起人和初始状态
Originator originator = new Originator();
originator.setState("满血");
originator.Show();
//保存状态,由于有了封装性,可以隐藏发起人 Originator 的细节
Caretaker caretaker = new Caretaker();
caretaker.setMemento(originator.CreateMemento());
//更新了状态
originator.setState("残血");
originator.Show();
//恢复备忘录状态
originator.SetMemnto(caretaker.getMemento());
originator.Show();
}
}
内容总结
以上是互联网集市为您收集整理的设计模式 十三、备忘录模式全部内容,希望文章能够帮你解决设计模式 十三、备忘录模式所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。