知识大全 深入浅出Java设计之备忘录模式

Posted

篇首语:愿君学长松,慎勿作桃李。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 深入浅出Java设计之备忘录模式相关的知识,希望对你有一定的参考价值。

深入浅出Java设计之备忘录模式  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  一 引子   俗话说 世上难买后悔药 所以凡事讲究个 三思而后行 但总常见有人做 痛心疾首 状 当初我要是…… 如果真的有《大话西游》中能时光倒流的 月光宝盒 那这世上也许会少一些伤感与后悔——当然这只能是痴人说梦了   但是在我们手指下的程序世界里 却有的后悔药买 今天我们要讲的备忘录模式便是程序世界里的 月光宝盒 二 定义与结构   备忘录(Memento)模式又称标记(Token)模式 GOF给备忘录模式的定义为 在不破坏封装性的前提下 捕获一个对象的内部状态 并在该对象之外保存这个状态 这样以后就可将该对象恢复到原先保存的状态   在讲命令模式的时候 我们曾经提到利用中间的命令角色可以实现undo redo的功能 从定义可以看出备忘录模式是专门来存放对象历史状态的 这对于很好的实现undo redo功能有很大的帮助 所以在命令模式中undo redo功能可以配合备忘录模式来实现   其实单就实现保存一个对象在某一时刻的状态的功能 还是很简单的——将对象中要保存的属性放到一个专门管理备份的对象中 需要的时候则调用约定好的方法将备份的属性放回到原来的对象中去 但是你要好好看看为了能让你的备份对象访问到原对象中的属性 是否意味着你就要全部公开或者包内公开对象原本私有的属性呢?如果你的做法已经破坏了封装 那么就要考虑重构一下了   备忘录模式只是GOF对 恢复对象某时的原有状态 这一问题提出的通用方案 因此在如何保持封装性上——由于受到语言特性等因素的影响 备忘录模式并没有详细描述 只是基于C++阐述了思路 那么基于Java的应用应该怎样来保持封装呢?我们将在实现一节里面讨论   来看下 月光宝盒 备忘录模式的组成部分    ) 备忘录(Memento)角色 备忘录角色存储 备忘发起角色 的内部状态 备忘发起角色 根据需要决定备忘录角色存储 备忘发起角色 的哪些内部状态 为了防止 备忘发起角色 以外的其他对象访问备忘录 备忘录实际上有两个接口 备忘录管理者角色 只能看到备忘录提供的窄接口——对于备忘录角色中存放的属性是不可见的 备忘发起角色 则能够看到一个宽接口——能够得到自己放入备忘录角色中属性    ) 备忘发起(Originator)角色 备忘发起角色 创建一个备忘录 用以记录当前时刻它的内部状态 在需要时使用备忘录恢复内部状态    ) 备忘录管理者(Caretaker)角色 负责保存好备忘录 不能对备忘录的内容进行操作或检查

cha138/Article/program/Java/gj/201311/27324

相关参考

知识大全 Java设计模式之Strategy模式

Java设计模式之Strategy模式  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Strat

知识大全 Java设计模式之Observer模式

Java设计模式之Observer模式  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Obser

知识大全 Java设计模式之Command 模式

Java设计模式之Command模式  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Comman

知识大全 Java设计模式之Adapter模式

Java设计模式之Adapter模式  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  通常客户类(

知识大全 Java设计模式之计数代理模式

Java设计模式之计数代理模式  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  描述    计数代

知识大全 Java设计模式之Decorator模式

Java设计模式之Decorator模式  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  JDK为

知识大全 Java设计模式之迭代器模式

Java设计模式之迭代器模式  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!一引言  迭代这个名词对

知识大全 Java设计模式之Proxy模式

Java设计模式之Proxy模式  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  为什么要使用Pr

知识大全 Java设计模式之修饰模式篇

Java设计模式之修饰模式篇  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  最近我给女朋友买了一

知识大全 Java设计模式之Iterator模式介绍

Java设计模式之Iterator模式介绍  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!所谓Ite