设计模式:memento模式】的更多相关文章

一:概念 用于保存对象的内部状态,并在需要的时候(undo/rollback)回复对象以前的状态 二:应用场景 如果一个对象需要保存状态并可通过undo或rollback等操作恢复到以前的状态时,可以使用Memento模式. )一个类需要保存它的对象的状态(相当于Originator角色): )设计一个类,该类只是用来保存上述对象的状态(相当于Memento角色): )需要的时候,Caretaker角色要求Originator返回一个Memento并加以保存: )undo或rollback操作时…
Memento定义:memento是一个保存另外一个对象内部状态拷贝的对象,这样以后就可以将该对象恢复到原先保存的状态. Memento模式相对也比较好理解,我们看下列代码: public class Originator { private int number; private File file = null; public Originator(){} // 创建一个Memento public Memento getMemento(){ return new Memento(this)…
Memento模式? 使用面向对象编程的方式实现撤销功能时,需要事先保存实例的相关状态信息.然后,在撤销时,还需要根据所保存的信息将实例恢复至原来的状态.这个时候你需要使用Memento设计模式.(以及实例实现对状态的保存) 关键字: 1.·Undo(撤销) 2.·Redo(重做) 3.·History(历史记录) 4.·Snapshot(快照) 破坏封装性: 将依赖于实例内部结构的代码分散地编写在程序中的各个地方,导致程序变得难以维护. 宽窄接口 wide interface--宽接口(APl…
Memento模式作用:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样以后就可将该对象恢复到原先保存的状态. UML图: Originator:负责创建一个备忘录Memento,用以记录当前时刻它的内部状态,并可使用备忘录恢复内部状态.Originator可根据需要决定Memento存储Originator的哪些内部状态. Memento:负责存储Originator对象的内部状态,并可防止Originator以外的其他对象访问备忘录Memento.备忘录有两个…
Memento模式即快照模式,就是在某一时刻,设定一个状态,在后面随时可以返回到当前状态的模式. 我们拿一个闯关游戏作为举例,一共有十关,每闯一关,玩家所持金额增加一百,而闯关失败就扣一百.初始时,给玩家一百块作为闯关资金,如果十关全部闯玩,并且玩家手中金额不小于0,则胜利,当玩家所持金额小于0,则视为闯关失败,直接退出. 下面看案例代码,有一个玩家类 gamer package site.wangxin520.gof.memento.demo.game; import java.util.Ra…
一. 备忘录模式 定义:在不破坏封装性的前提下,捕获一个对象的内部状态.并在该对象之外保存这个状态. 这样以后就可将该对象恢复到原先保存的状态. 结构图: 使用范围: Memento 模式比較适用于功能比較复杂的.但须要维护或记录属性历史的类,或者须要保存的属性仅仅是众多属性中的一小部分时.Originator 能够依据保存的 Memento 信息还原到前一状态. 代码: [cpp] view plaincopy //备忘录类 //负责存储 Originator 对象的内部状态 class Me…
在使用面向对象编程的方式实现撤销功能时,需要事先保存实例的相关状态信息.然后,在撤销时,还需要根据所保存的信息将实例恢复至原来的状态. 要想恢复实例,需要一个可以自由访问实例内部结构的权限.但是,如果稍有不注意,又可能会将依赖于实例内部结构的代码分散地编写在程序的各种地方,导致程序变得难以维护.这种情况就叫做“破坏了封装性”. 通过引入表示实例状态的角色,可以在保存和恢复实例时有效地防止对象的封装性遭到破坏.这就是Memento模式. 使用Memento可以实现撤销.重做.历史记录.快照等功能.…
一. 备忘录模式 定义:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态.这样以后就可将该对象恢复到原先保存的状态. 结构图: 使用范围: Memento 模式比较适用于功能比较复杂的,但需要维护或记录属性历史的类,或者需要保存的属性只是众多属性中的一小部分时,Originator 可以根据保存的 Memento 信息还原到前一状态. 代码: //备忘录类 //负责存储 Originator 对象的内部状态 class Memento { //注意:备忘录类中的方法是私…
目录 Memento模式 示例代码 程序类图 代码 角色和类图 模式类图 角色 思路拓展 接口可见性 保存多少个Memento 划分Caretaker和Originator的意义 Memento模式 备忘录模式最常见的应用是各种编辑器,如果写错了,点击"撤销"按钮就能回到原来的状态. 不使用备忘录模式对实例进行保存和恢复,很容易破坏封装性:将依赖实例内部结构的代码写得到处都是,程序变得难以维护. 备忘录模式专门添加了Memento角色,这个角色专门用来保存和恢复实例,能有效防止对象的封…
状态变化模式 在组件构建过程中,某些对象的状态经常面临变化,如何对这些变化进行有效的管理?同时又维持高层模块的稳定?"状态变化"模式为这一问题提供了一种解决方案. 典型模式 State Memento Memento 动机(Motivation) 在软件构建过程中,某些对象的状态在转换过程中,可能由于某种需要,要求程序能够回溯到对象之前处于某个点时的状态.如果使用一一些公有接口来让其他对象得到对象的状态,便会暴露对象的细节实现. 如何实现对象状态的良好保存与恢复?但同时又不会因此而破坏…