【大话设计模式】——备忘录 VS 命令

    学行为型模式的时候,觉得备忘录模式与命令模式差不多,今天就将两者进行对比,加深一下印象。


一、介绍


1、备忘录模式


(1)Memento:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可以将对象恢复到原先保存的状态。

(2)类图


【大话设计模式】——备忘录 VS 命令_第1张图片



(3)个人理解

    我们日常生活中的备忘录,就是保存自己的记事,下次看的时候能够唤起当时的记忆。这不就和这个模式有点相似嘛,用文字来记录我们当时的心情状态等,用手机将此状态保存到记事本里。
    这里的主人公,就相当于备忘录模式中的发起人(Originator),而记事本就相当于备忘录(Memento),用来存储当时的记忆,而我们的手机就是用来保存状态的,相当于(caretaker)。


(4)优缺点

优点:避免暴露内部状态,客户端不需要知道具体的状态是什么,能够在需要时恢复到先前的状态,例如我们的备份系统。
缺点:代价高,如果需要创建备忘录时存储大量的数据,或者是频繁的创建和恢复,会导致非常大的开销。

2、命令模式


(1)Command:将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化,对请求排队或记录请求日志,以及支持可撤销的操作。

(2)类图


【大话设计模式】——备忘录 VS 命令_第2张图片

(3)个人理解:

    门店卖烤肉串相对于摆摊来说,命令请求者与命令执行者的耦合性降低,并且利于添加新的命令,对命令进行撤销和重做等。


(4)优缺点

优点:降低了命令请求者与命令执行者的耦合性;灵活添加新命令,并设计组合命令;允许撤销和重做;
缺点:如果有过多的命令,就会导致系统中有过多的具体命令类,影响使用。

二、对比


1、相同点


(1)从类型上说,二者都是行为型模式,描述类和对象如何交互以及如何分配职责,用合理的方法处理。
(2)从功能上说,二者都有撤销的功能。

2、不同点


撤销功能的侧重不同,命令模式主要是对当前请求的修改,而备忘录模式主要是针对状态的恢复。


三、总结


    通过对两个模式的比较,清楚了二者的区别,但是二者联系起来就更好了,如果在一个系统中需要对命令实现撤销功能,那就加上备忘录模式,用备忘录模式来储存可撤销操作内容的状态。

四、感受

   
    用对比的方法来学习更能够调动自己,让自己想起来了一些有趣的生活往事。虽然这些模式理解,具体怎么用什么的还不怎么清楚,但是从心态上就已经发生了改变,学着学着就有了动力。不管现在理解的对不对,总之,以后会有更深刻的理解的。


你可能感兴趣的:(编程思想,设计模式)