来源 | cnblogs.com/zhou--fei/p/9905536.html
现有场景描述:
现在无论是系统自带的键盘还是第三方的键盘一般都自带撤销和恢复功能,你知道它们是用的什么模式实现的吗?
它们用的是命令模式 + 观察者模式,你答对了吗?
Command模式:

调用者中有个聚合关系的命令类
命令类索引着命令接受者
是不是So Easy!!

被观察者索引着观察者对象
是不是So Easy!!
关于观察者模式,如果有不熟悉的童鞋,看这里,加代码具体来讲解:设计模式是什么鬼(观察者)
NSUndoManager是苹果提供的撤销恢复管理类,它里面主要有三个要素构成
图表显示如下:

进入撤销栈时,NSInvocation执行撤销命令

进入恢复栈时,NSInvocation执行恢复命令
开发中如何将它们合起来用呢?