社区
模式及实现
帖子详情
策略模式与命令模式的区别 是什么?
wanglovec
2008-11-15 11:32:04
有人说 前一个是封装算法 后一个是封装动作
我觉着着不是本质的区别? 大家以为呢?
...全文
943
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)
C#设计
模式
大全
C#设计
模式
(1) 一、 C# 面向对象程序设计复习 二、 设计
模式
举例 三、 先有鸡还是先有蛋? 四、 大瓶子套小瓶子还是小瓶子套大瓶子? 五、 .net本质 C#设计
模式
(2) 一、 "开放-封闭"原则(OCP) 二、 里氏代换原则(LSP) C#设计
模式
(3) 三、 依赖倒置原则(DIP) 四、 接口隔离原则(ISP) 五、 合成/聚合复用原则(CARP) 六、 迪米特法则(LoD) C#设计
模式
(4)-Simple Factory Pattern 一、 简单工厂(Simple Factory)
模式
二、 Simple Factory
模式
角色与结构: 三、 程序举例: 四、 Simple Factory
模式
演化 五、 优点与缺点: C#设计
模式
(5)-Factory Method Pattern 一、 工厂方法(Factory Method)
模式
二、 Factory Method
模式
角色与结构: 三、 程序举例: 四、 工厂方法
模式
与简单工厂
模式
五、 Factory Method
模式
演化 六、 Factory Method
模式
与其它
模式
的关系 七、 另外一个例子 C#设计
模式
(6)-Abstract Factory Pattern 一、 抽象工厂(Abstract Factory)
模式
二、 Abstract Factory
模式
的结构: 三、 程序举例: 四、 在什么情形下使用抽象工厂
模式
: 五、 抽象工厂的起源 六、 Abstract Factory
模式
在实际系统中的实现 七、 "开放-封闭"原则 C#设计
模式
(7)-Singleton Pattern 一、 单例(Singleton)
模式
二、 Singleton
模式
的结构: 三、 程序举例: 四、 在什么情形下使用单例
模式
: 五、 Singleton
模式
在实际系统中的实现 六、 C#中的Singleton
模式
C#设计
模式
(8)-Builder Pattern 一、 建造者(Builder)
模式
二、 Builder
模式
的结构: 三、 程序举例: 四、 建造者
模式
的活动序列: 五、 建造者
模式
的实现: 六、 建造者
模式
的演化 七、 在什么情况下使用建造者
模式
C#设计
模式
(9)-Prototype Pattern 一、 原型(Prototype)
模式
二、 Prototype
模式
的结构: 三、 程序举例: 四、 带Prototype Manager的原型
模式
五、 浅拷贝与深拷贝 六、 Prototype
模式
的优点与缺点 C#设计
模式
(10)-Adapter Pattern 一、 适配器(Adapter)
模式
二、 类的Adapter
模式
的结构: 三、 类的Adapter
模式
示意性实现: 四、 对象的Adapter
模式
的结构: 五、 对象的Adapter
模式
示意性实现: 六、 在什么情况下使用适配器
模式
七、 一个实际应用Adapter
模式
的例子 八、 关于Adapter
模式
的讨论 C#设计
模式
(11)-Composite Pattern 一、 合成(Composite)
模式
二、 合成
模式
概述 三、 安全式的合成
模式
的结构 四、 安全式的合成
模式
实现 五、 透明式的合成
模式
结构 六、 透明式的合成
模式
实现 七、 使用合成
模式
时考虑的几个问题 八、 和尚的故事 九、 一个实际应用Composite
模式
的例子 C#设计
模式
(12)-Decorator Pattern 一、 装饰(Decorator)
模式
二、 装饰
模式
的结构 三、 装饰
模式
示例性代码 四、 装饰
模式
应当在什么情况下使用 五、 装饰
模式
实际应用的例子 六、 使用装饰
模式
的优点和缺点 七、
模式
实现的讨论 八、 透明性的要求 九、 装饰
模式
在.NET中的应用 C#设计
模式
(13)-Proxy Pattern 一、 代理(Proxy)
模式
二、 代理的种类 三、 远程代理的例子 四、 代理
模式
的结构 五、 代理
模式
示例性代码 六、 高老庄悟空降八戒 七、 不同类型的代理
模式
八、 代理
模式
实际应用的例子 设计
模式
(14)-Flyweight Pattern 一、 享元(Flyweight)
模式
二、 单纯享元
模式
的结构 三、 单纯享元
模式
的示意性源代码 四、 复合享元
模式
的结构 五、 一个咖啡摊的例子 六、 咖啡屋的例子 七、 享元
模式
应当在什么情况下使用 八、 享元
模式
的优点和缺点 设计
模式
(15)-Facade Pattern 一、 门面(Facade)
模式
二、 门面
模式
的结构 三、 门面
模式
的实现 四、 在什么情况下使用门面
模式
五、 一个例子 六、 使用门面
模式
的设计 设计
模式
(16)-Bridge Pattern 一、 桥梁(Bridge)
模式
二、 桥梁
模式
的结构 三、 桥梁
模式
的示意性源代码 四、 调制解调器问题 五、 另外一个实际应用Bridge
模式
的例子 六、 在什么情况下应当使用桥梁
模式
设计
模式
(17)-Chain of Responsibility Pattern 一、 职责链(Chain of Responsibility)
模式
二、 责任链
模式
的结构 三、 责任链
模式
的示意性源代码 四、 纯的与不纯的责任链
模式
五、 责任链
模式
的实际应用案例 六、 责任链
模式
的实现 设计
模式
(18)-Command Pattern 一、
命令
(Command)
模式
二、
命令
模式
的结构 三、
命令
模式
的示意性源代码 四、 玉帝传美猴王上天 五、
命令
模式
的实现 六、
命令
模式
的实际应用案例 七、 在什么情况下应当使用
命令
模式
八、 使用
命令
模式
的优点和缺点 设计
模式
(19)-Observer Pattern 一、 观察者(Observer)
模式
二、 观察者
模式
的结构 三、 观察者
模式
的示意性源代码 四、 C#中的Delegate与Event 五、 一个实际应用观察者
模式
的例子 六、 观察者
模式
的优缺点 设计
模式
(20)-Visitor Pattern 一、 访问者(Visitor)
模式
二、 访问者
模式
的结构 三、 示意性源代码 四、 一个实际应用Visitor
模式
的例子 五、 在什么情况下应当使用访问者
模式
六、 使用访问者
模式
的优点和缺点 设计
模式
(21)-Template Method Pattern 一、 模板方法(Template Method)
模式
二、 模版方法
模式
的结构 三、 模板方法
模式
的示意性代码 四、 继承作为复用的工具 五、 一个实际应用模板方法的例子 六、 模版方法
模式
中的方法 七、 重构的原则 设计
模式
(22)-Strategy Pattern 一、 策略(Strategy)
模式
二、
策略
模式
的结构 三、 示意性源代码 四、 何时使用何种具体策略角色 五、 一个实际应用
策略
模式
的例子 六、 在什么情况下应当使用
策略
模式
七、
策略
模式
的优点和缺点 八、 其它
代理
模式
,
策略
模式
,
命令
模式
差别在哪?
代理
模式
:注重增强
策略
模式
:注重执行结果,没有代码增强
命令
模式
:
区别
执行对象和指令对象
策略
模式
与
命令
模式
很相似,只是概念不同
策略
模式
的执行方法与策略对象的执行方法一致,这和代理
模式
一样
命令
模式
的执行方法与
命令
对象的执行方法不一样,这就是概念
区别
佩服,这也算广告的话,其他真正包含广告的,已发布的可以都处理了吗? 请加强管理! ...
命令
模式
,及与
策略
模式
的
区别
策略
模式
的意图是封装算法,它认为“算法”已经是一个完整的、不可拆分的原子业务,即其意图是让这些算法独立,并且可以相互替换,让行为的变化独立于拥有行为的客户。
命令
模式
则是对动作的解耦,把一个动作的执行分为执行对象(接收者角色)、执行行为(
命令
角色),让两者相互独立而不相互影响。
命令
模式
:对
命令
的封装,每一个
命令
都是一个操作,请求方发出请求,接收方接收请求,并执行操作。请求者角色Control构造器注入具体的
命令
角色(openCommand)了请求方和接收方,
命令
模式
属于行为型
模式
。command:
命令
接口。
23种设计
模式
之
命令
模式
和
策略
模式
的
区别
命令
模式
和
策略
模式
确实很相似,只是
命令
模式
多了一个接收者(Receiver)角色。它们虽然同为行为类
模式
,但是两者的
区别
还是很明显的。
策略
模式
的意图是封装算法,它认为“算法”已经是一个完整的、不可拆分的原子业务(注意这里是原子业务,而不是原子对象),即其意图是让这些算法独立,并且可以相互替换,让行为的变化独立于拥有行为的客户;而
命令
模式
则是对动作的解耦,把一个动作的执行分为执行对象(接收者角色)、执行行为(
命令
角色),让两者相互独立而不相互影响。
命令
模式
VS
策略
模式
行为
模式
:关注系统中对象之间的相互交互,研究系统在运行时对象之间的相互通信和协作,进一步明确对象的职责,共11种
模式
。模板方法
模式
、
命令
模式
、迭代器
模式
、观察者
模式
、中介者
模式
、备忘录
模式
、解释器
模式
、状态
模式
、
策略
模式
、职责链
模式
、访问者
模式
。本文主要对方
命令
模式
和
策略
模式
的 1
策略
模式
和
命令
模式
的不同之处: (1)
策略
模式
的主要意图是封装算法,对于他来说,“算法...
模式及实现
5,530
社区成员
4,169
社区内容
发帖
与我相关
我的任务
模式及实现
C/C++ 模式及实现
复制链接
扫一扫
分享
社区描述
C/C++ 模式及实现
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章