研磨设计模式之命令模式-6
?
?
3.7? 命令模式的优缺点
更松散的耦合??? 命令模式使得发起命令的对象——客户端,和具体实现命令的对象——接收者对象完全解耦,也就是说发起命令的对象,完全不知道具体实现对象是谁,也不知道如何实现。?更动态的控制
??? 命令模式把请求封装起来,可以动态对它进行参数化、队列化和日志化等操作,从而使得系统更灵活。能很自然的复合命令
??? 命令模式中的命令对象,能够很容易的组合成为复合命令,就是前面讲的宏命令,从而使系统操作更简单,功能更强大。更好的扩展性
??? 由于发起命令的对象和具体的实现完全解耦,因此扩展新的命令就很容易,只需要实现新的命令对象,然后在装配的时候,把具体的实现对象设置到命令对象里面,然后就可以使用这个命令对象,已有的实现完全不用变化。
?
3.8? 思考命令模式1:命令模式的本质
??????? 命令模式的本质:封装请求。
??????? 前面讲了,命令模式的关键就是把请求封装成为命令对象,然后就可以对这个对象进行一系列的处理了,比如上面讲到的参数化配置、可撤销操作、宏命令、队列请求、日志请求等功能处理。
2:何时选用命令模式
??????? 建议在如下情况中,选用命令模式:
?
3.9? 退化的命令模式
??????? 在领会了命令模式本质后,来思考一个命令模式退化的情况。
??????? 前面讲到了智能命令,如果命令的实现对象超级智能,实现了命令所要求的功能,那么就不需要接收者了,既然没有了接收者,那么也就不需要组装者了。
(1)举个最简单的示例来说明
??????? 比如现在要实现一个打印服务,由于非常简单,所以基本上就没有什么讲述,依次来看,命令接口定义如下:
不过楼主写得好,
,这些文章是我看过写的最好的文章了, 期待楼主讲Facade模式和观察者模式
,这些文章是我看过写的最好的文章了, 期待楼主讲Facade模式和观察者模式
习惯了,总有些同志以踩人为乐,也说不出个缘由,讲不出个道理来跟大家分享,不要去管这些同志了,呵呵.
PS:谢谢你给我的评价,太高了,有点受之有愧,呵呵. 一直以来做东西呢,都是在努力的在面向接口设计,也在无意中使用了一些设计模式,这次回来好好把理论恶补一下,很强悍,一看就是经验超足,喜欢思考的人物。 12 楼 luodan0815 2011-03-23 很不错,都是想要的知识点。。