行为型设计模式-备忘录模式
来源:互联网 发布:淘宝怎么装修 编辑:程序博客网 时间:2024/06/06 18:19
备忘录模式:
在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样以后就可将该对象恢复到原先保存的状态
小应用:单机游戏中,退出游戏或者游戏故障时进行备份,游戏重新启动之后则从备份还原备份数据
备忘录模式参与角色:
发起者:记录当前时刻的内部状态,负责定义备份范围,负责创建和恢复备忘录数据
备忘录:负责存储发起人对象的内部状态,在需要的时候提供发起人需要的内部状态
管理角色:对备忘录进行管理,保存和提供备忘录
发起者:Originator
package com.zhiwei.memento;public class Originator { private String name; private String content; private String persons; public void setName (String name) { this.name = name; } public String getName () { return this.name; } public void setContent (String content) { this.content = content; } public String getContent () { return this.content; } public void setPersons (String persons) { this.persons = persons; } public String getPersons () { return this.persons; } /** * 备份会议记录 * @return */ public Memento getMemento() { return new Memento(this); } /** * 还原会议记录 * @param memento */ public void setMemento(Memento memento) { this.name = memento.getName(); this.content = memento.getContent (); this.persons = memento.getPersons (); }}
备忘录:Memento
package com.zhiwei.memento;public class Memento { private String name; private String content; private String persons; public Memento(Originator originator) { this.name = originator.getName(); this.content = originator.getContent(); this.persons = originator.getPersons(); } public void setName(String name) { this.name = name; } public String getName() { return this.name; } public void setContent(String content) { this.content = content; } public String getContent() { return this.content; } public void setPersons(String persons) { this.persons = persons; } public String getPersons() { return this.persons; }}
管理角色:Caretaker
package com.zhiwei.memento;public class Caretaker { private Memento memento; /** * 恢复 * @return */ public Memento getMemento() { return memento; } /** * 备份 * @param memento */ public void setMemento(Memento memento) { this.memento = memento; }}
测试代码:
Originator originator = new Originator(); //发起者 originator.setName("公司销售会议"); originator.setContent("有关销售价格的会议内容"); originator.setPersons("总经理、销售处长"); System.out.println("旧内容:" + originator.getName() + " :" + originator.getContent() + " :" + originator.getPersons()); //管理者备份数据 Caretaker caretaker = new Caretaker(); caretaker.setMemento(originator.getMemento()); originator.setName("公司办公会议"); originator.setContent("有关员工稳定的会议内容"); originator.setPersons("董事长、总经理、人事副总"); System.out.println("新内容:" + originator.getName() + " :" + originator.getContent() + " :" + originator.getPersons()); //从管理者获取已备份的数据并恢复 originator.setMemento(caretaker.getMemento()); System.out.println("备份内容:" + originator.getName() + " :" + originator.getContent() + " :" + originator.getPersons());
效果:
0 0
- 设计模式 - 行为型模式 - 备忘录模式
- 设计模式->行为型模式->备忘录模式
- 设计模式-行为-备忘录
- 设计模式--行为型--备忘录模式
- 设计模式21:备忘录模式【行为型】
- [设计模式-行为型]备忘录模式(Memento)
- 设计模式-行为型之备忘录模式
- 行为型设计模式-备忘录模式
- 备忘录模式(行为型)
- Java设计模式之行为型模式(备忘录模式)
- 设计模式---行为类型---备忘录
- 行为型模式--备忘录模式
- 行为型模式-备忘录模式
- 设计模式笔记--行为型模式之六--Memento 备忘录
- 设计模式笔记(21)---备忘录模式(行为型)
- 设计模式(18)-行为型-备忘录模式(Memento)
- java设计模式(行为型)之备忘录模式
- 设计模式--备忘录模式Memento(行为型)
- ROS
- C全部数据类型
- 代码(软件)是怎么和硬件发生联系的?
- Qt容器类-QList、QMultiMap
- Android studio的安装及常见问题
- 行为型设计模式-备忘录模式
- copyToLocalFile(Path src, Path dst) 报空指针 问题分析
- BZOJ 4519([Cqoi2016]不同的最小割-Gusfield算法)
- 【MYSQL】金额(金钱)相关的数据存储类型
- 框架面试题集锦
- 蓝桥杯 李白喝酒
- C常量
- Android Studio 快捷键
- 快速排序的Java实现