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

Command模式和Strategy模式有何区别?该怎么解决

2012-02-10 
Command模式和Strategy模式有何区别?看了一些设计模式的书籍,发现其中举的Command模式的例子也可用strateg

Command模式和Strategy模式有何区别?
看了一些设计模式的书籍,发现其中举的Command模式的例子也可用strategy模式来实现,晕了。多谢高人赐教!

[解决办法]
命令模式的“适应性”第一条:命令模式是代替回调函数的面向对象实现。

策略模式是用于封装大量有共同接口的算法实现的模式。
[解决办法]
http://topic.csdn.net/t/20050203/11/3772734.html
[解决办法]
2楼的链接里面不是已经有了么?

探讨
能举个例子说明只适合用Command模式而不适合用Strategy模式不?

[解决办法]
最近在看《大话设计模式》上面有许多例子,不过是用的C#语言描述的。
[解决办法]
UP
[解决办法]
这两个模式差别如此之大,你还是再研究研究。
[解决办法]
Command模式的基本动机是解耦程序动作的发起与实际执行,这就象战场上班长下达命令(Command):机枪掩护(Comnand对象1),步兵冲锋(Command对象2),但实际机枪怎么打,每个步兵怎么冲则属于执行的事,并非都由班长计划好的。不同的兵将会有不同的冲锋路径,这叫“多态”。Command模式的解耦机制一可实现多态,二可实现异步(动作发起并不意味着马上执行),因此楼上有人说Command模式用于替代Call Back函数,因为Call Back函数总意味着同步方式。
Strategy模式目的是实现程序行为模板,即一个程序行为中部分动作是确定的,部分动作不确定,但确定部分与不确定部分有着确定的关系,比如饮料灌装流水线:第一步,准备空瓶;第二步,装满饮料;第三步,封口; 第四步,贴商标。Stragtegy模式揭示这种步骤的确定性,但具本灌什么饮料,贴什么商标则留给具体的Strategy实现。因此,它也是多态的,但它显然是同步的,因此,实现通常通过Call Back函数或所谓Sink机制(本质上仍是Call Back函数)。至此,Command与Strategy的异同应当比较明了了。

热点排行