社区
模式及实现
帖子详情
策略模式与命令模式的区别 是什么?
wanglovec
2008-11-15 11:32:04
有人说 前一个是封装算法 后一个是封装动作
我觉着着不是本质的区别? 大家以为呢?
...全文
960
28
打赏
收藏
策略模式与命令模式的区别 是什么?
有人说 前一个是封装算法 后一个是封装动作 我觉着着不是本质的区别? 大家以为呢?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用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)
策略
模式
和
命令
模式
的
区别
策略
模式
主要针对算法抽象(Strategy策略接口),它将每个算法封装到一个单独的类中,使得客户端可以根据具体情况在这些策略之间进行切换,
策略
模式
关注的是定义一系列可互换的算法或行为,允许在运行时选择和替换不同的策略。而
命令
模式
则是针对请求抽象(Command
命令
接口),Command通过将任何操作转换为对象,操作的参数将成为该对象的字段。从而实现使得请求可以被存储、延迟、排队、撤销、重试以及发送到远程服务器等。
策略
模式
侧重于不同策略类实现与切换,而
命令
模式
则侧重于对(不同)请求的封装
代理
模式
,
策略
模式
,
命令
模式
差别在哪?
代理
模式
:注重增强
策略
模式
:注重执行结果,没有代码增强
命令
模式
:
区别
执行对象和指令对象
策略
模式
与
命令
模式
很相似,只是概念不同
策略
模式
的执行方法与策略对象的执行方法一致,这和代理
模式
一样
命令
模式
的执行方法与
命令
对象的执行方法不一样,这就是概念
区别
佩服,这也算广告的话,其他真正包含广告的,已发布的可以都处理了吗? 请加强管理! ...
命令
模式
与
策略
模式
的比较:选择合适的设计
模式
设计
模式
是软件设计中的最佳实践总结,是经过反复验证的解决方案,用于解决面向对象设计中常见的问题。设计
模式
不仅可以提高开发效率,还能增强代码的可读性和复用性。
命令
模式
(Command Pattern)是一种行为型设计
模式
,它将请求封装为对象,从而允许用户用不同的请求、队列或者日志来参数化对象。
命令
模式
还支持可撤销的操作。
策略
模式
(Strategy Pattern)也是一种行为型设计
模式
,它定义了一系列算法,并将每个算法封装起来,使它们可以相互替换。
策略
模式
使得算法的变化不会影响使用算法的客户端。
命令
模式
,及与
策略
模式
的
区别
策略
模式
的意图是封装算法,它认为“算法”已经是一个完整的、不可拆分的原子业务,即其意图是让这些算法独立,并且可以相互替换,让行为的变化独立于拥有行为的客户。
命令
模式
则是对动作的解耦,把一个动作的执行分为执行对象(接收者角色)、执行行为(
命令
角色),让两者相互独立而不相互影响。
命令
模式
:对
命令
的封装,每一个
命令
都是一个操作,请求方发出请求,接收方接收请求,并执行操作。请求者角色Control构造器注入具体的
命令
角色(openCommand)了请求方和接收方,
命令
模式
属于行为型
模式
。command:
命令
接口。
北风设计
模式
课程---
策略
模式
与
命令
模式
区别
北风设计
模式
课程---
策略
模式
与
命令
模式
区别
一、总结 一句话总结: 同一件事 >< 不同事情:
策略
模式
是通过不同的算法做同一件事情:例如排序
命令
模式
则是通过不同的
命令
做不同的事情,常含有(关联)接收者。 是否含有接收者:
命令
模式
含有,
策略
模式
不含有。
命令
模式
中的
命令
可以单独运行。 1、
策略
模式
与
命令
模式
区别
的比喻?
命令
模式
等于菜单中的复制,移动,...
模式及实现
5,530
社区成员
4,167
社区内容
发帖
与我相关
我的任务
模式及实现
C/C++ 模式及实现
复制链接
扫一扫
分享
社区描述
C/C++ 模式及实现
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章