最长见于游戏状态保存,该模式不需要知道游戏具体状态,只是保存起来,等待需要的时候恢复。UML图:orininator 类是对memonto类的操作类。Memonto是状态类,记录了游戏的数据状态。CareTaker是保存memonto的类,不能修改memonto的内容!/*存取的内容,包含很多载体。...
分类:
其他好文 时间:
2014-12-16 11:15:54
阅读次数:
222
undo-redo需要备忘录模式和命令模式做支撑,之前有学习过了command模式和memento模式的一些基本知识。这里要结合两个模式实现一个undo-redo操作的模块,巩固所学的知识。
系统框图:
命令分发控制器主要有四个任务:
1.系统初始化,加载系统配置参数并把这些数据缓存起来,这些应用程序级别的配置参数可以使用序列化机制,把数据缓存而不用每次去读...
分类:
其他好文 时间:
2014-12-13 17:57:23
阅读次数:
218
在应用程序设计过程中,一些具体操作需要能够支持撤销(undo),例如最近在写的一个文件管理系统。文件的一些基本操作如:rename、copy、cut等,需要支持undo、redo操作来提供更好的用户体验。总所周知,undo、redo操作需要两个模式支撑:备忘录模式(memento)保存对象操作数据状态、命令模式(command)封装用户请求。结合起来可以提供良好的撤销、重做操作。命令模式可以参考上...
分类:
其他好文 时间:
2014-12-12 13:26:52
阅读次数:
167
备忘录模式,翻译成标记模式好一些,因为这种设计模式的目的是为了反悔:GOF给备忘录模式的定义为:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。 在之前的命令模式中,我们曾经提到利用中间的命令角色可以实现undo、redo ...
分类:
其他好文 时间:
2014-12-09 17:31:00
阅读次数:
180
备忘录模式定义 备忘录模式(Memento),在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将对象回复到原先保存的状态。 备忘录模式结构图 备忘录模式结构图如下所示: 图 01 备忘录模式结构图 备忘录模式套用代码 #include "iostream"
u...
分类:
其他好文 时间:
2014-12-04 11:59:49
阅读次数:
124
定义:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样就可以将该对象恢复到原先保存的状态类型:行为类类图: 我们在编程的时候,经常需要保存对象的中间状态,当需要的时候,可以恢复到这个状态。比如,我们使用Eclipse进行编程时,假如编写失误(例如不小心误删除了几行代码...
分类:
其他好文 时间:
2014-12-02 17:12:53
阅读次数:
212
GoF设计模式简介目的/范围创建型模式结构性模式行为型模式类模式工厂方法模式(类)适配器模式解释器模式模板方法模式对象模式抽象工厂模式建造者模式原型模式单例模式(对象)适配器模式桥接模式组合模式装饰模式外观模式享元模式代理模式职责链模式命令模式迭代器模式中介者模式备忘录模式观察者模式状态模式策略模式...
分类:
其他好文 时间:
2014-11-20 09:04:34
阅读次数:
218
前言:【模式总览】——————————by xingoo 模式意图 这个模式主要是想通过一个对象来记录对象的某种状态,这样有利于在其他需要的场合进行恢复。 该模式还有跟多可以扩展的地方,比如可以记录多个时间的状态,每个角色都有可以扩展的空间,完全看业务场景而定。 应用场景 1 保存对象...
分类:
其他好文 时间:
2014-11-08 13:17:23
阅读次数:
265
假如我们已经记录一个人的个人信息,但是发现信息写错了,然后我先备份下再去修改,结果发现原来的信息是正确的,于是我就看备份的个人信息还原到初始的状态,下面我们用代码去实现class Program { static void Main(string[] args) {...
分类:
其他好文 时间:
2014-11-06 14:35:58
阅读次数:
273
state = $state; } public function show(){ echo $this->state.""; } public function setmemento(){//保存至备忘录 return new memento($this->state); } publi...
分类:
Web程序 时间:
2014-11-03 16:21:55
阅读次数:
160