行为型设计模式-备忘录模式
2017-03-01 17:28
375 查看
备忘录模式:
在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样以后就可将该对象恢复到原先保存的状态
小应用:单机游戏中,退出游戏或者游戏故障时进行备份,游戏重新启动之后则从备份还原备份数据
备忘录模式参与角色:
发起者:记录当前时刻的内部状态,负责定义备份范围,负责创建和恢复备忘录数据
备忘录:负责存储发起人对象的内部状态,在需要的时候提供发起人需要的内部状态
管理角色:对备忘录进行管理,保存和提供备忘录
发起者:Originator
备忘录:Memento
管理角色:Caretaker
测试代码:
效果:
在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样以后就可将该对象恢复到原先保存的状态
小应用:单机游戏中,退出游戏或者游戏故障时进行备份,游戏重新启动之后则从备份还原备份数据
备忘录模式参与角色:
发起者:记录当前时刻的内部状态,负责定义备份范围,负责创建和恢复备忘录数据
备忘录:负责存储发起人对象的内部状态,在需要的时候提供发起人需要的内部状态
管理角色:对备忘录进行管理,保存和提供备忘录
发起者: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());
效果:
相关文章推荐
- 设计模式十九:memento(备忘录)——对象行为型模式
- 设计模式笔记--行为型模式之六--Memento 备忘录
- java-设计模式(行为型)-【备忘录模式】
- [设计模式笔记]三. 行为型模式--20. Memento模式(备忘录)对象行为型模式(一)
- "围观"设计模式(31)--行为型设计模式总结(模板、观察者、策略、状态、责任链、命令、访问者、中介者、备忘录、解释器)
- Java设计模式(行为型)之-备忘录模式(Memento)
- [导入]C#面向对象设计模式纵横谈(21):(行为型模式) Memento 备忘录模式.zip(9.73 MB)
- GoF23种设计模式之行为型模式之备忘录模式
- java设计模式--行为型模式--备忘录模式
- 设计模式21:备忘录模式【行为型】
- Java设计模式_行为型_备忘录模式_大话西游之月光宝盒
- GoF23种设计模式之行为型模式之备忘录模式
- 设计模式--备忘录模式Memento(行为型)
- 设计模式之行为型备忘录模式
- 设计模式之行为型模式(责任链、命令、解释器、迭代式、仲裁者、备忘录、观察者、状态、策略、模板方法、访问者)
- 设计模式-行为型之备忘录模式
- 设计模式19——行为型模式之备忘录模式
- 设计模式之行为型模式―― 3.7 备忘录模式
- 23种设计模式4--行为型模式(策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式)
- GoF23种设计模式之行为型模式之备忘录模式