JAVA和Nginx 教程大全

网站首页 > 精选教程 正文

设计模式第2招第3式之命令模式 命令模式定义

wys521 2024-11-02 14:56:08 精选教程 32 ℃ 0 评论



设计模式

【欢迎关注、点赞、评论、收藏和转发,您的肯定是我创作的最大动力!】

热烈欢迎关注【IT导航】学习编程从我做起。

设计模式源码地址:https://github.com/eraare/DesignPatterns

前言:

本系列文章共23篇,详细介绍GOF (Gang Of Four)所定义的23种设计模式。共分为三大类对应标题中的3大招,每类中的每一种设计模式对应3大招中的某一式:

第1招-创建型(共5式):单例模式,工厂方法模式,抽象工厂模式,建造者模式,原型模式;

第2招-行为型(共11式):观察者模式,策略模式,命令模式,状态模式,解释器模式,迭代器模式,中介者模式,访问者模式,备忘录模式,责任链模式,模板方法模式;

第3招-结构型(共7式):适配器模式,外观模式,代理模式,装饰者模式,组合模式,桥接模式,享元模式。

算法:所谓算法就是指为了解决某一问题而采取的方法和步骤。

算法特性:有穷性、确定性、可行性、输入、输出

内容摘要:

  1. 定义

  2. 应用场景

  3. Java代码实例

  4. 优缺点

  5. 小结

一、定义

命令模式:将请求封装起来,以便使用不同的请求、日志、队列来参数化其它对象。命令模式支持撤销操作。

含义如其名,命令模式就是为了封装命令,一切可以称为命令的事物都可以使用命令模式,也都是命令模式的体现。比如:你去餐厅去吃饭,会有一个服务员拿个菜单过来让你点菜。点完菜后,服务员会把菜单交给相应的厨师去做菜。这个场景中的你是命令的发起者Invoker,服务员是命令的传递者传递具体的命令菜单ConcreteCommand,而厨师是最终的接收者Receiver处理命令。

命令模式UML

二、应用场景

  1. 电视机的遥控器有多个命令;

  2. 任何类型下达命令执行的地方;

  3. 需要进行指令执行记录或控制的地方;

三、Java代码实例

我们按照定义和UML图来实现命令模式:

1. 创建Receiver和ICommand以及Command。其中Receiver是命令的最终执行者,可以是任意能够执行的对象,本文定义为Receiver;ICommand为抽象命令,Command为具体命令;

命令类和命令执行类

2. 创建命令请求者;

命令发起类

3.客户端使用;



客户端使用

四、优缺点

优点:

  1. 易扩展,如果有新的命令可以直接添加;

  2. 解耦命令的发起者和命令的执行者;

  3. 可以控制命令的执行和撤销;

  4. 方便命令的重复使用以及命令的记录。

缺点:

  1. 每一个命令都需要一个具体的命令类,导致类的数量暴增;

  2. 使用者需要知道所有的命令才能方便的使用;

五、小结

命令模式体现了设计原则中的里氏替换原则、开放关闭原则、最少知识原则。是一个比较完美的设计原则,实用性也比较高。不过实用场景比较突出,编程中使用频率倒不像前几种设计模式那么高。

机车

设计模式第2招第2式之策略模式


本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表