首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件开发 >

研磨设计形式之命令模式-6

2012-10-06 
研磨设计模式之命令模式-6??3.7? 命令模式的优缺点 更松散的耦合??? 命令模式使得发起命令的对象——客户端,

研磨设计模式之命令模式-6

?

?

3.7? 命令模式的优缺点

更松散的耦合
??? 命令模式使得发起命令的对象——客户端,和具体实现命令的对象——接收者对象完全解耦,也就是说发起命令的对象,完全不知道具体实现对象是谁,也不知道如何实现。?更动态的控制
??? 命令模式把请求封装起来,可以动态对它进行参数化、队列化和日志化等操作,从而使得系统更灵活。能很自然的复合命令
??? 命令模式中的命令对象,能够很容易的组合成为复合命令,就是前面讲的宏命令,从而使系统操作更简单,功能更强大。更好的扩展性
??? 由于发起命令的对象和具体的实现完全解耦,因此扩展新的命令就很容易,只需要实现新的命令对象,然后在装配的时候,把具体的实现对象设置到命令对象里面,然后就可以使用这个命令对象,已有的实现完全不用变化。

?

3.8? 思考命令模式

1:命令模式的本质
??????? 命令模式的本质:封装请求
??????? 前面讲了,命令模式的关键就是把请求封装成为命令对象,然后就可以对这个对象进行一系列的处理了,比如上面讲到的参数化配置、可撤销操作、宏命令、队列请求、日志请求等功能处理。
2:何时选用命令模式
??????? 建议在如下情况中,选用命令模式:

如果需要抽象出需要执行的动作,并参数化这些对象,可以选用命令模式,把这些需要执行的动作抽象成为命令,然后实现命令的参数化配置如果需要在不同的时刻指定、排列和执行请求,可以选用命令模式,把这些请求封装成为命令对象,然后实现把请求队列化如果需要支持取消操作,可以选用命令模式,通过管理命令对象,能很容易的实现命令的恢复和重做的功能如果需要支持当系统崩溃时,能把对系统的操作功能重新执行一遍,可以选用命令模式,把这些操作功能的请求封装成命令对象,然后实现日志命令,就可以在系统恢复回来后,通过日志获取命令列表,从而重新执行一遍功能在需要事务的系统中,可以选用命令模式,命令模式提供了对事务进行建模的方法,命令模式有一个别名就是Transaction。

?


3.9? 退化的命令模式

??????? 在领会了命令模式本质后,来思考一个命令模式退化的情况。
??????? 前面讲到了智能命令,如果命令的实现对象超级智能,实现了命令所要求的功能,那么就不需要接收者了,既然没有了接收者,那么也就不需要组装者了。
(1)举个最简单的示例来说明
??????? 比如现在要实现一个打印服务,由于非常简单,所以基本上就没有什么讲述,依次来看,命令接口定义如下:

 期待下一个模式。  

不过楼主写得好, ,这些文章是我看过写的最好的文章了, 期待楼主讲Facade模式和观察者模式  ,这些文章是我看过写的最好的文章了, 期待楼主讲Facade模式和观察者模式 

    习惯了,总有些同志以踩人为乐,也说不出个缘由,讲不出个道理来跟大家分享,不要去管这些同志了,呵呵.
    PS:谢谢你给我的评价,太高了,有点受之有愧,呵呵. 一直以来做东西呢,都是在努力的在面向接口设计,也在无意中使用了一些设计模式,这次回来好好把理论恶补一下,很强悍,一看就是经验超足,喜欢思考的人物。 12 楼 luodan0815 2011-03-23   很不错,都是想要的知识点。。

热点排行