社区
模式及实现
帖子详情
策略模式与命令模式的区别 是什么?
wanglovec
2008-11-15 11:32:04
有人说 前一个是封装算法 后一个是封装动作
我觉着着不是本质的区别? 大家以为呢?
...全文
998
28
打赏
收藏
策略模式与命令模式的区别 是什么?
有人说 前一个是封装算法 后一个是封装动作 我觉着着不是本质的区别? 大家以为呢?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
28 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
jxt123codedown
2011-11-02
打赏
举报
回复
我本来挺清楚的~
sourcceinsigt35
2008-12-03
打赏
举报
回复
mark
filec75
2008-12-03
打赏
举报
回复
mark
lemonrong
2008-12-03
打赏
举报
回复
[Quote=引用 5 楼 zmlovelx 的回复:]
策略模式 把易于变化的行为分别封装起来,让它们之间可以互相替换, 让这些行为的变化独立于拥有这些行为的客户。
GoF《设计模式》中说道:定义一系列算法,把它们一个个封装起来,并且使它们可以相互替换。该模式使得算法可独立于它们的客户变化。
Command命令模式是一种对象行为型模式,它主要解决的问题是:在软件构建过程中,“行为请求者”与“行为实现者”通常呈现一种“紧耦合”的问题。
GoF《设计模式》…
[/Quote]
赞!
lq20051610211
2008-12-01
打赏
举报
回复
up~
junstruggle
2008-11-29
打赏
举报
回复
ding
wanglovec
2008-11-29
打赏
举报
回复
给我的感觉是,1:策略模式 不决定何时用哪个策略。而command 模式中的请求者 会决定。
2:可以给command 设置不同的接受者,command 对象 如果只是简单的调用 接受者 则基本上 它就没有存在的必要
可能说的不是很清楚,与大家共讨论
wanglovec
2008-11-29
打赏
举报
回复
其实command模式就是把原来involker需要有一个receiver的引用给去掉了,这样原来的一个对receiver的一个函数调用就变成了一个command对象的执行,中间引入了command对象就把involker和receive分离了,这样任何一端的变化都会影响到另一端,这种思想在dp中很常见.
command对象带来的第二个好处就是将原来的函数变成了一个对象,这样就可以方便的进行管理,支持undo redo 甚至象上文中放入堆栈中让它自动执行.更强的就是加入事务的管理.
策略模式的用意是针对一组算法,将每一个算法封装到具有共同接口的独立的类中,从而使得它们可以相互替换。"、"策略模式仅仅封装算法,提供新算法插入到已有系统中,以及老算法从系统中"退休"的方便,策略模式并不决定在何时使用何种算法
现在 对command 模式和策略模式有了更清晰的认识,但如果 清晰的说出他们的区别 我还一直 想不出来该怎么表达
qap22
2008-11-29
打赏
举报
回复
mark
wanglovec
2008-11-29
打赏
举报
回复
他们之间还是有很大区别的,特别是 invoke
命令模式 是有一个 “命令” command 这个中间层,由于 请求者 直接调用的是 command 这样就和 实现者分开了
nullah
2008-11-28
打赏
举报
回复
[Quote=引用 4 楼 Chiyer 的回复:]
策略模式
http://www.jdon.com/designpatterns/designpattern_Strategy.htm
命令模式
http://www.jdon.com/designpatterns/command.htm
[/Quote]
MARK
android2008
2008-11-28
打赏
举报
回复
不懂,帮顶
CodeDreaming
2008-11-28
打赏
举报
回复
大体是的
就呆在云上
2008-11-21
打赏
举报
回复
http://www.cnblogs.com/zhenyulu/articles/87237.html
看看这篇文章吧:
特别是回复
各种设计模式之间,有很多相似之处,只是由于侧重的方向不同。 我个人觉得,策略模式和命令模式的其中一个最大区别,是在于:策略模式对付的问题域通常是一个,就是说,多个策略只是处理同一个问题,而命令模式对付的是多个问题域,就是很多不同的命令来做不同的事情。
lemonrong
2008-11-21
打赏
举报
回复
[Quote=引用 5 楼 zmlovelx 的回复:]
策略模式 把易于变化的行为分别封装起来,让它们之间可以互相替换, 让这些行为的变化独立于拥有这些行为的客户。
GoF《设计模式》中说道:定义一系列算法,把它们一个个封装起来,并且使它们可以相互替换。该模式使得算法可独立于它们的客户变化。
Command命令模式是一种对象行为型模式,它主要解决的问题是:在软件构建过程中,“行为请求者”与“行为实现者”通常呈现一种“紧耦合”的问题。
GoF《设计模式》…
[/Quote]
说的很清楚
taodm
2008-11-21
打赏
举报
回复
是的,最大的区别就是概念上的区别。
它们是用在不同环境下的。即使它们的代码长得一个样。
在家里你是“子女”,在学校你是“学生”。学生和子女要区别么?
mujiok2003
2008-11-21
打赏
举报
回复
[Quote=引用 5 楼 zmlovelx 的回复:]
策略模式 把易于变化的行为分别封装起来,让它们之间可以互相替换, 让这些行为的变化独立于拥有这些行为的客户。
GoF《设计模式》中说道:定义一系列算法,把它们一个个封装起来,并且使它们可以相互替换。该模式使得算法可独立于它们的客户变化。
Command命令模式是一种对象行为型模式,它主要解决的问题是:在软件构建过程中,“行为请求者”与“行为实现者”通常呈现一种“紧耦合”的问题。
GoF《设计模式》…
[/Quote]
说得非常好,策略模式主要目的是可扩展性,命令模式的主要目的是解耦.实际应用中,根据需要使用.
filec75
2008-11-21
打赏
举报
回复
ding
帅得不敢出门
2008-11-15
打赏
举报
回复
策略模式 把易于变化的行为分别封装起来,让它们之间可以互相替换, 让这些行为的变化独立于拥有这些行为的客户。
GoF《设计模式》中说道:定义一系列算法,把它们一个个封装起来,并且使它们可以相互替换。该模式使得算法可独立于它们的客户变化。
Command命令模式是一种对象行为型模式,它主要解决的问题是:在软件构建过程中,“行为请求者”与“行为实现者”通常呈现一种“紧耦合”的问题。
GoF《设计模式》中说道:将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作。
星羽
2008-11-15
打赏
举报
回复
策略模式
http://www.jdon.com/designpatterns/designpattern_Strategy.htm
命令模式
http://www.jdon.com/designpatterns/command.htm
加载更多回复(8)
23种设计
模式
之
命令
模式
和
策略
模式
的
区别
命令
模式
和
策略
模式
确实很相似,只是
命令
模式
多了一个接收者(Receiver)角色。它们虽然同为行为类
模式
,但是两者的
区别
还是很明显的。
策略
模式
的意图是封装算法,它认为“算法”已经是一个完整的、不可拆分的原子业务(注意这里是原子业务,而不是原子对象),即其意图是让这些算法独立,并且可以相互替换,让行为的变化独立于拥有行为的客户;而
命令
模式
则是对动作的解耦,把一个动作的执行分为执行对象(接收者角色)、执行行为(
命令
角色),让两者相互独立而不相互影响。
命令
模式
,及与
策略
模式
的
区别
策略
模式
的意图是封装算法,它认为“算法”已经是一个完整的、不可拆分的原子业务,即其意图是让这些算法独立,并且可以相互替换,让行为的变化独立于拥有行为的客户。
命令
模式
则是对动作的解耦,把一个动作的执行分为执行对象(接收者角色)、执行行为(
命令
角色),让两者相互独立而不相互影响。
命令
模式
:对
命令
的封装,每一个
命令
都是一个操作,请求方发出请求,接收方接收请求,并执行操作。请求者角色Control构造器注入具体的
命令
角色(openCommand)了请求方和接收方,
命令
模式
属于行为型
模式
。command:
命令
接口。
策略
模式
与
命令
模式
区别
策略
模式
把易于变化的行为分别封装起来,让它们之间可以互相替换, 让这些行为的变化独立于拥有这些行为的客户。 GoF《设计
模式
》中说道:定义一系列算法,把它们一个个封装起来,并且使它们可以相互替换。该
模式
使得算法可独立于它们的客户变化。 Command
命令
模式
是一种对象行为型
模式
,它主要解决的问题是:在软件构建过程中,“行为请求者”与“行为实现者”通常呈现一种“紧耦合”的问题。
状态
模式
,
命令
模式
和
策略
模式
的
区别
设计
模式
中有三个
模式
State, Command, Strategy,这三种设计
模式
都是行为型设计
模式
,在结构上又都很像,所以很多时候分不清楚。 区分这三种
模式
不要focus在结构上,这三种
模式
最主要是在使用意图上有
区别
: 状态
模式
:内部维护一个状态,会随着public api的调用进行相应的状态转移。外界不需要知道状态及其变化情况。
命令
模式
:根据客户的请求封装相应的
命令
,处理者就
模式及实现
5,529
社区成员
4,167
社区内容
发帖
与我相关
我的任务
模式及实现
C/C++ 模式及实现
复制链接
扫一扫
分享
社区描述
C/C++ 模式及实现
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章