设计模式 -- 命令模式

前言

月是一轮明镜,晶莹剔透,代表着一张白纸(啥也不懂)

央是一片海洋,海乃百川,代表着一块海绵(吸纳万物)

泽是一柄利剑,千锤百炼,代表着千百锤炼(输入输出)

月央泽,学习的一种过程,从白纸->吸收各种知识->不断输入输出变成自己的内容

希望大家一起坚持这个过程,也同样希望大家最终都能从零到零,把知识从薄变厚,再由厚变薄!

一、什么是命令模式?

        命令模式是一种行为设计模式,它允许将请求封装为一个对象,从而使不同的请求可以被参数化、队列化、记录日志、撤销等操作。该模式的核心是将请求的发起者和执行者解耦,以便更好地管理和扩展系统

二、命令模式的优缺点:

优点:

  1. 解耦:命令模式可以将请求者和接收者解耦,请求者不需要知道接收者的具体实现,只需要知道命令即可。

  2. 可扩展性:可以很容易地添加新的命令,只需要添加一个新的命令类即可。

  3. 可撤销:命令模式可以实现撤销和重做操作,可以很方便地回滚操作。

  4. 可记录:命令模式可以记录操作日志,方便后续分析和处理。

  5. 安全性:命令模式可以提高系统的安全性,因为可以限制命令的权限。

  6. 灵活性:命令模式可以根据需求灵活地组合命令,实现复杂的操作

缺点:

  1. 代码多余:实现命令模式需要创建多个类,这可能会导致代码过于冗长。

  2. 额外的内存开销:每个命令对象都需要额外的内存开销,这可能会导致系统的性能下降。

  3. 可能会导致系统复杂性增加:实现命令模式需要创建多个类,这可能会导致系统变得更加复杂。

  4. 可能会导致系统响应时间增加:由于命令模式需要创建多个对象,这可能会导致系统响应时间变慢。

  5. 可能会导致代码难以理解:由于命令模式需要创建多个类和对象,这可能会导致代码难以理解和维护。

三、命令模式的结构:

 

 

 Command(manager):定义命令接口,生命执行的方法

ConcreteCommand(ManageForAdd或者ManageForDelete):命令接口实现对象

Receiver(Product,Front,Back)

invoker:接受命令并执行

四、命令模式实战:

        以上图为示例,现在有甲方要求做出一个功能,而甲方需要找到项目对接人,不想事无巨细的去与每个组进行沟通,具体命令就有项目经理去下达一项项命令,指挥对应的组去完成

1.创建项目组(Product.Front,Back以及公共接口):

 

 

 2.创建命令类及其抽象类

 

 

 

 3.创建Invoker

 4.测试

 5.测试结果:

 

五.总结:

命令模式适用于以下场景:

  1. 需要将请求发送给多个对象,但是不知道具体接收者是谁。

  2. 需要将请求排队或者记录请求日志。

  3. 需要实现可撤销操作。

  4. 需要实现事务性操作。

  5. 需要实现回滚操作。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值