java-设计模式(行为型)-【备忘录模式】
2015-04-20 18:28
387 查看
http://alaric.iteye.com/blog/1931253
http://www.cnblogs.com/java-my-life/archive/2012/06/06/2534942.html
1.备忘录模式(Memento)
定义:主要目的是保存一个对象的某个状态,以便在适当的时候恢复对象,个人觉得叫备份模式更形象些。
通俗的讲下:假设有原始类A,A中有各种属性,A可以决定需要备份的属性,备忘录类B是用来存储
A的一些内部状态,类C呢,就是一个用来存储备忘录的,且只能存储,不能修改等操作
关系图:
2.举例
2.1 Original类:原始类:
2.2 存储类:
2.3 测试:
2.4 运行结果:
3. 黑箱操作(将备忘录以私有化内部类的形式定义,再通过一个接口给外界访问):
测试:
结果:
http://www.cnblogs.com/java-my-life/archive/2012/06/06/2534942.html
1.备忘录模式(Memento)
定义:主要目的是保存一个对象的某个状态,以便在适当的时候恢复对象,个人觉得叫备份模式更形象些。
通俗的讲下:假设有原始类A,A中有各种属性,A可以决定需要备份的属性,备忘录类B是用来存储
A的一些内部状态,类C呢,就是一个用来存储备忘录的,且只能存储,不能修改等操作
关系图:
2.举例
2.1 Original类:原始类:
//原始类 public class Original { //状态信息 private String state=""; //备忘录:保存状态信息 public Memento createMemento() { return new Memento(state); } public String getState() { return state; } //重置状态信息:从备忘录中重置 public void resetState(Memento memento) { System.out.print("重置-"); setState(memento.getState()); } public void setState(String state) { this.state = state; System.out.println("设置-状态:"+state); } } //备忘录:不可修改状态信息 class Memento { private String state=null; public String getState() { return state; } public Memento(String state) { this.state=state; } }
2.2 存储类:
//保存备忘录的存储类 public class Storage { private Memento memento=null; public Storage(Memento memento) { this.memento=memento; } public Memento getMemento() { return memento; } }
2.3 测试:
public class Test { public static void main(String[] args) { // TODO Auto-generated method stub Original ori=new Original(); ori.setState("off"); //保存备忘录 Storage sto=new Storage(ori.createMemento()); //改变状态 ori.setState("on"); //重置状态 ori.resetState(sto.getMemento()); } }
2.4 运行结果:
设置-状态:off 设置-状态:on 重置-设置-状态:off
3. 黑箱操作(将备忘录以私有化内部类的形式定义,再通过一个接口给外界访问):
//原始类 public class Original { //状态信息 private String state=""; //备忘录:以内部类的方式保存信息,继承该接口,方便外界访问它 private class Memento implements MementoIF { public Memento(Original ori) { state=ori.state; } public String getState() { // TODO Auto-generated method stub return null; } } public Memento createMemento() { return new Memento(this); } public String getState() { return state; } //重置状态信息:从备忘录中重置 public void resetState(MementoIF memento) { System.out.print("重置-"); Memento mem=(Memento)memento ; setState(mem.getState()); } public void setState(String state) { this.state = state; System.out.println("设置-状态:"+state); } } //创建一个接口:方便外部对备忘录内部类的访问 interface MementoIF { }
测试:
public class Test { public static void main(String[] args) { // TODO Auto-generated method stub Original ori=new Original(); ori.setState("off"); //保存备忘录 MementoIF memento=ori.createMemento(); //改变状态 ori.setState("on"); //重置状态 ori.resetState(memento); } }
结果:
设置-状态:off 设置-状态:on 重置-设置-状态:off
相关文章推荐
- Java设计模式_行为型_备忘录模式_大话西游之月光宝盒
- java设计模式(行为型)之备忘录模式
- Java设计模式(行为型)之-备忘录模式(Memento)
- java设计模式--行为型模式--备忘录模式
- Java设计模式(22)行为型:中介者模式
- java-设计模式(行为型)-【责任链模式】
- Java设计模式之备忘录模式
- Java设计模式之备忘录模式
- java设计模式总结篇--行为型模式(2)
- java设计模式之行为型模式
- “设计模式”学习之八:备忘录、观察者与状态(行为型)
- Java设计模式之行为型模式(迭代器模式)
- Java设计模式_行为型_模板方法模式_论房地产开发
- java设计模式--迭代器模式 Iterator,备忘录模式 Memento,中介者模式 Mediator
- GoF23种设计模式之行为型模式之备忘录模式
- 设计模式19——行为型模式之备忘录模式
- Java设计模式之备忘录模式_动力节点Java学院
- 详解备忘录模式及其在Java设计模式编程中的实现
- Java的设计模式-----备忘录模式
- Java设计模式百例 - 备忘录模式