行为型模式——命令模式(Command)

开头

    今天我们来学习一下行为型模式中的命令模式,这是一个相对比较简答的模式,当我们看到“命令”一词时我们联想到的是什么?既然是命令,Who发出命令,Who接收执行命令,有了发出命令的人,和接收命令的人,那么该如何更好的处理两者之间的关系,更好的接收和执行命令呢?今天我们学习的命令模式就解决的这个问题。


内容

     例子:我们想象一个场景,有一天有很多很多的客户去饭店吃饭(饭点只有一个厨师老板),一个客户点了西红柿炒鸡蛋,一个客户点了花生毛豆,一个客户点了火锅鸡等等等,过了一会一个顾客说你做的饭没有熟,老板我结账。是不是许多多的客户发出各种命令,老板就像热锅的的蚂蚱,急得团团转,不知所措,到时候身体还吃不消。老板既要接收各种各种命令,又要执行客户提出的各种命令。这就好比我们系统,如果用户有很多的请求命令,系统要不停的接收执行命令,这过不久系统就会崩溃而亡。

   后来老板招收了一个服务员,这个服务员就替老板将所有的命令收集起来,将每个客户的请求写在了账单上,一笔一笔的记录下来,老板只需要看着服务员的记录,执行客户的各种命令,不用直接和客户打交道,服务员的存在有两大好处,第一个好处是收集客户的命令,第二个是将客户(命令发起者)和厨师(命令执行者)分隔开,使得两者的耦合度下降。这就是命令模式是如何更好的处理类(客户)与类(厨师)之间关系的。

  

  我们可以将命令模式大致分为四类:抽象命令类( Command)、具体命令类( ConcreteCommand)、调用者(Invoker)、接收者(Receiver

调用者(Invoker):服务员,1、收集具体命令  2、调用具体命令的方法


抽象命令类( Command):所有命令实现的接口,声明执行命令的方法

具体命令类( ConcreteCommand):实现抽象命令类声明的方法,调用执行命令的方法


接收者(Receiver):厨师,执行各种命令。

扫描二维码关注公众号,回复: 1372720 查看本文章


客户端:也就是吃饭的用户



总结

命令模式(Command):将一个请求封装为一个对象,从而是你可用不同的对象请求对客户进行参数化,对请求排队或记录请求日志,以及支持可撤销操作

优点:(1)降低系统耦合度,将请求者和接收者分开。

          (2)可以将多个命令对象集合在一起。

缺点:多个具体命令类,导致系统复杂。

适用环境:系统需要将请求调用者和请求接收者解耦。


 关于命令模式的学习就先到这里,如果本篇博客对于初学者的您有一定的帮助,记得给小编点赞哦。


猜你喜欢

转载自blog.csdn.net/fjxcsdn/article/details/80521664
今日推荐