千锋教育-做有情怀、有良心、有品质的职业教育机构

手机站
千锋教育

千锋学习站 | 随时随地免费学

千锋教育

扫一扫进入千锋手机站

领取全套视频
千锋教育

关注千锋学习站小程序
随时随地免费学习课程

当前位置:首页  >  技术干货  > 命令模式和策略模式的区别

命令模式和策略模式的区别

来源:千锋教育
发布人:xqq
时间: 2023-12-13 22:41:40 1702478500

命令模式(Command Pattern)和策略模式(Strategy Pattern)都是设计模式中的行为型模式,它们用于封装对象中的行为,但它们的主要应用和目的有所不同。

以下是这两种模式的主要特点和区别:

1、目的

命令模式:它的主要目的是将请求封装成对象,从而使你可以参数化其他对象,排队请求或者记录请求日志,以及支持可撤销的操作。

策略模式:它的主要目的是定义一系列算法,并将每个算法封装起来,使它们可以相互替换。这样的模式让算法独立于使用它的客户。

2、结构与关键角色

命令模式:

命令(Command):定义了执行操作的接口。

具体命令(ConcreteCommand):实现了命令接口,包含接收者的引用,调用接收者的相关操作。

请求者(Invoker):持有一个命令对象并在某个时间点调用命令对象的执行方法。

接收者(Receiver):执行与请求相关的操作,实际的操作逻辑。

3、策略模式

策略(Strategy):定义了所有支持的算法的公共接口。

具体策略(ConcreteStrategy):实现了策略接口的具体算法。

上下文(Context):维护一个策略对象的引用,可用于切换具体策略。

4、应用场景

命令模式:适用于需要对请求进行参数化、排队或者记录请求日志,以及支持可撤销操作的场景。例如:GUI 按钮、请求队列、日志请求等。

策略模式:当有一系列的算法,并且这些算法只在行为上有所不同,需要能够动态选择算法时,使用策略模式是很合适的。例如:不同的税收策略、不同的排序策略等。

5、封装的粒度

命令模式:封装的是具体的操作或请求。

策略模式:封装的是一系列的算法或策略。

尽管命令模式和策略模式在某些情况下可能看起来相似,但它们解决的问题和应用的场景是不同的。命令模式注重对请求的封装,而策略模式注重对算法或策略的封装。

tags: it培训
声明:本站稿件版权均属千锋教育所有,未经许可不得擅自转载。
10年以上业内强师集结,手把手带你蜕变精英
请您保持通讯畅通,专属学习老师24小时内将与您1V1沟通
免费领取
今日已有369人领取成功
刘同学 138****2860 刚刚成功领取
王同学 131****2015 刚刚成功领取
张同学 133****4652 刚刚成功领取
李同学 135****8607 刚刚成功领取
杨同学 132****5667 刚刚成功领取
岳同学 134****6652 刚刚成功领取
梁同学 157****2950 刚刚成功领取
刘同学 189****1015 刚刚成功领取
张同学 155****4678 刚刚成功领取
邹同学 139****2907 刚刚成功领取
董同学 138****2867 刚刚成功领取
周同学 136****3602 刚刚成功领取
相关推荐HOT