1. 秦子帅的博客首页
  2. Android

设计模式(8)-命令模式详解(易懂)

设计模式(8)-命令模式详解(易懂)

安卓干货铺
专注Android技术,坚持原创+博文分享
关注

命令模式的定义

命令模式,将一组行为抽象为对象,实现二者之间的松耦合。这就是命令模式(Command Pattern)。

模型:

设计模式(8)-命令模式详解(易懂)

  • Invoker:调用者,就是接收到命令后负责调用

  • Receiver:接受者,也就是执行命令的人,最苦逼的

  • Command:命令者,封装好的命令类

下面通过通俗的实例来了解一下命令模式。

实例说明

既然命令,就拿“项目经理”-“开发人员”举例吧,比如有个外包的项目需要开发,开发完成后甲方要求改一改某个功能。下面用代码详细说明一下:

1.首先定义一个抽象的Receiver,因为开发人员不止一个人


2.定义具体的Receiver,这里假设有两个开发人员



3.定义Command,命令类,也就是刚才说的甲方要求改一改某个功能的命令,假如此功能是开发人员A改:



4.定义Invoker类,也就是项目经理,负责安排调用


5.调用

运行后:

设计模式(8)-命令模式详解(易懂)

命令模式的优缺点及其他

1.优点:

  • 降低对象之间的耦合度

  • 新的命令可以很容易地加入到系统中

  • 可以比较容易地设计一个组合命令

  • 调用同一方法实现不同的功能

2.缺点:

使用命令模式可能会导致某些系统有过多的具体命令类。因为针对每一个命令都需要设计一个具体命令类,因此某些系统可能需要大量具体命令类,这将影响命令模式的使用。

3.使用场景

  • 需要对行为进行记录,撤销,重做,事务处理时

  • 需要抽象出待执行的动作,然后以参数的形式提供出来

4.附加:

如果有人问了,撤销的操作怎么做,其实很简单。在抽象的接收类中定义一个“撤销”的方法。然后再定义一个撤销Command来增加这个撤销命令就好了。

本文学习参考了《设计模式之禅》以及网上信息…

我的交流群

应该有很多新关注我的人吧,这里提供一下我的交流群,里面有主要是博文分享,大家互相帮助,共同进步!

设计模式(8)-命令模式详解(易懂)

可以直接加我的微信lengquele5311,或者公众号右边有我的微信。

我的独立博客:http://qinzishuai.cn

另外在过年期间我会给大家发红包,年后会有送书活动,敬请期待!

设计模式(8)-命令模式详解(易懂)

推荐阅读:

RecyclerView 体验优化及入坑总结

设计模式(7)-原型模式详解(易懂)

设计模式(8)-命令模式详解(易懂)

设计模式(8)-命令模式详解(易懂)

原文始发于微信公众号( 秦子帅 ):设计模式(8)-命令模式详解(易懂)

发布者:秦子帅,转转请注明出处:http://qinzishuai.cn/index.php/2018/02/08/dac0dda375/

联系我们

912241847

在线咨询:点击这里给我发消息

邮件:qzs531156@163.com

QR code