观察者模式
定义对象间一种一对多的依赖关系,使得每当一个对象改变状态,则所有依赖于它的对象都会得到通知并被自动更新。
实际上,观察者模式只是典型的回调机制,可以广播。比较简单,就不多叙述了。
备忘录模式
意思是:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样,以后就可以将该对象恢复到原先保存的状态。
■ 发起人(Originator)角色:该角色记录当前时刻的内部状态,负责定义哪些属于备份范围的状态,负责创建和恢复备忘数据。
■ 备忘录(Memento)角色:该角色负责存储发起人角色的内部状态,在需要时提供发起人需要的内部状态数据。
■ 负责人(Caretaker)角色:该角色对备忘录角色进行管理、保存和提供备忘录。
备忘录模式只是一个备份机制,单独作为一个模式觉得没必要,感觉没啥好讲的。不用这些东西,直接创建一些备份数据来恢复也可以。
使用该模式的要点在于,备忘录和管理者的划分。对高层模块来说,它最希望要做的就是创建一个备份点,然后在需要的时候再恢复到这个备份点就成了,它不用关心到底有没有备忘录这个类。需要备份的时候就创建一个备份,然后丢给备忘录管理者进行管理,要取的时候再从管理者手中拿到这个备份。
这个备份者就类似于一个备份的仓库管理员,创建一个丢进去,需要的时候再拿出来。这就是备忘录模式。
另外,我们可以根据需要进行多个备份,或者多处备份的管理。有了管理员,实现方式就多种多样,就不展开了。