小A:“备忘录模式与命令模式有一些相似之处,他们都保存状态,他们都可以拥有前进与后退,但是他们到底在设计上与实现上有哪些差别呢?”
大B:从UML我们可以清晰的看到区别,一个保存Object的状态,一个保存命令。相同:都可以前进后退。不同:执行对象不同,保存状态的对象不同,所执行的操作也不相同。由于两种模式时所对应的需求截然不同,应该说备忘录更加稳定一些,而命令的执行则更加广泛,可能一个子类的Command对应一个Receiver。所以相对而言Command模式会更加灵活一些。应用:Command模式:将命令当作一个对象进行保存,进行Redo,Undo操作。
例子:在绘图系统中经常需要进行Redo,Undo操作。Memento模式:获取和保存对象的内部状态。例子:网上购物时购物车既可以理解为Memento。