设计模式之——Memento模式】的更多相关文章

Memento模式即快照模式,就是在某一时刻,设定一个状态,在后面随时可以返回到当前状态的模式. 我们拿一个闯关游戏作为举例,一共有十关,每闯一关,玩家所持金额增加一百,而闯关失败就扣一百.初始时,给玩家一百块作为闯关资金,如果十关全部闯玩,并且玩家手中金额不小于0,则胜利,当玩家所持金额小于0,则视为闯关失败,直接退出. 下面看案例代码,有一个玩家类 gamer package site.wangxin520.gof.memento.demo.game; import java.util.Ra…
目的:在不破坏系统封装性的前提下,记录系统每一步的状态,可以做到状态回退和前进 方法: 定义一个数据类,保存所有相关数据 定义一个管理类,提供保存和恢复的接口 具体操作类调用管理类的保存和恢复接口 例子: class Memento //状态数据类 { int money; public: Memento(int money) { this->money = money; } void setMoney(int money) { this->money = money; } int getMo…
原文:乐在其中设计模式(C#) - 备忘录模式(Memento Pattern) [索引页][源码下载] 乐在其中设计模式(C#) - 备忘录模式(Memento Pattern) 作者:webabcd 介绍 在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态.这样以后就可将该对象恢复到保存的状态. 示例 有一个Message实体类,某个对象对它的操作有Insert()方法,只有在插入时间符合要求的情况下才能插入成功,因此要求可以保存和恢复Message对象的状态,插入失…
Memento定义:memento是一个保存另外一个对象内部状态拷贝的对象,这样以后就可以将该对象恢复到原先保存的状态. Memento模式相对也比较好理解,我们看下列代码: public class Originator { private int number; private File file = null; public Originator(){} // 创建一个Memento public Memento getMemento(){ return new Memento(this)…
备忘录模式(Memento) 在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态.这样以后就可将该对象恢复到原先保存的状态. Originator(发起人):负责创建一个备忘录Memento,用以记录当前时刻它的内部状态,并可使用备忘录恢复内部状态.Originator可根据需要决定Memento存储Originator的哪些内部状态. Memento(备忘录):负责存储Originator对象的内部状态,并可防止Originator以外的其他对象访问备忘录Memento…
Memento模式? 使用面向对象编程的方式实现撤销功能时,需要事先保存实例的相关状态信息.然后,在撤销时,还需要根据所保存的信息将实例恢复至原来的状态.这个时候你需要使用Memento设计模式.(以及实例实现对状态的保存) 关键字: 1.·Undo(撤销) 2.·Redo(重做) 3.·History(历史记录) 4.·Snapshot(快照) 破坏封装性: 将依赖于实例内部结构的代码分散地编写在程序中的各个地方,导致程序变得难以维护. 宽窄接口 wide interface--宽接口(APl…
一,C#设计模式:备忘录模式(Memento Pattern) 1.发起人角色(Originator):记录当前时刻的内部状态,负责创建和恢复备忘录数据.负责创建一个备忘录Memento,用以记录当前时刻自身的内部状态,并可使用备忘录恢复内部状态.Originator[发起人]可以根据需要决定Memento[备忘录]存储自己的哪些内部状态.2.备忘录角色(Memento):负责存储发起人对象的内部状态,在进行恢复时提供给发起人需要的状态,并可以防止Originator以外的其他对象访问备忘录.备…
备忘录模式确保在不破坏封装的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样可以在以后将对象恢复到原先保存的状态.备忘录模式提供了一种状态恢复的实现机制,使得用户可以方便地回到一个特定的历史步骤. 优点: 1)保持封装的完整. 2)简化了返回到初始状态所需的操作. 使用场景: 1)必须保存对象状态的快照,这样以后就可以恢复状态. 2)使用直接接口来获得状态可能会公开对象的实现细节,从而破坏对象的封装性. Memento 模式…
一. 备忘录模式 定义:在不破坏封装性的前提下,捕获一个对象的内部状态.并在该对象之外保存这个状态. 这样以后就可将该对象恢复到原先保存的状态. 结构图: 使用范围: Memento 模式比較适用于功能比較复杂的.但须要维护或记录属性历史的类,或者须要保存的属性仅仅是众多属性中的一小部分时.Originator 能够依据保存的 Memento 信息还原到前一状态. 代码: [cpp] view plaincopy //备忘录类 //负责存储 Originator 对象的内部状态 class Me…
在使用面向对象编程的方式实现撤销功能时,需要事先保存实例的相关状态信息.然后,在撤销时,还需要根据所保存的信息将实例恢复至原来的状态. 要想恢复实例,需要一个可以自由访问实例内部结构的权限.但是,如果稍有不注意,又可能会将依赖于实例内部结构的代码分散地编写在程序的各种地方,导致程序变得难以维护.这种情况就叫做“破坏了封装性”. 通过引入表示实例状态的角色,可以在保存和恢复实例时有效地防止对象的封装性遭到破坏.这就是Memento模式. 使用Memento可以实现撤销.重做.历史记录.快照等功能.…