备忘录模式。顾名思义,备忘录模式的初衷就是为了返回上一个状态而设计的。从名字看起来一目了然,好吧,还是老样子,先给出定义。
备忘录(Memento):在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。
定义看起来搞的很专业,其实就是保存上一个状态,以便日后恢复用。好比是在玩游戏,在打大Boss之前担心第一次打不过,先存个盘,万一玩儿完了,还可以恢复状态重新PK。
下面给出类结构图。
Originator(原发器):记录当前时刻的内部状态,负责定义哪些属于需要备份的状态,负责创建memento,负责从memento恢复状态。
Memento(备忘录):负责存储Originator的内部状态,在需要时提供给Originator内部状态。
Caretaker(看管人):将Memento保存在安全的地方,并负责提取。
一句话概括:Originator创建一个包含其状态的Memento交给Caretaker保管,Caretaker不知如何与Memento交互,只负责把Memento在安全的地方保存好。
从上面这张图来看,关系比较简单吧。那么备忘录模式一般都用在什么场合呢?
Memento模式比较适用于功能比较复杂的,但需要维护或记录属性历史的类,或者需要保存的属性只是众多属性中的一小部分时,Originator可以根据保存的Memento信息还原到前一状态。有时候一些对象的内部信息必须保存在对象以外的地方,但是必须要由对象自己读取,这时,使用备忘录可以把复杂的对象内部信息对其他的对象屏蔽起来。当然了,最大的作用还是在于当角色的状态改变的时候,有可能这个状态无效,这时候就可以使用暂时存储起来的备忘录将状态进行复原。好啦,其实翻来覆去就是为了恢复数据用的,车轱辘话就不多说了,下面给大家简单展示一下实现的代码吧。
Objective-C代码实现:
Originator:
@implementation NimoMemento
- (id)initWithState:(NSString *)state
{
if (self = [super init]) {
_state = [state copy];
}
return self;
}
@end
本文地址:https://www.stayed.cn/item/21430
转载请注明出处。
本站部分内容来源于网络,如侵犯到您的权益,请 联系我