前言
月是一轮明镜,晶莹剔透,代表着一张白纸(啥也不懂)
央是一片海洋,海乃百川,代表着一块海绵(吸纳万物)
泽是一柄利剑,千锤百炼,代表着千百锤炼(输入输出)
月央泽,学习的一种过程,从白纸->吸收各种知识->不断输入输出变成自己的内容
希望大家一起坚持这个过程,也同样希望大家最终都能从零到零,把知识从薄变厚,再由厚变薄!
一、什么是命令模式?
命令模式是一种行为设计模式,它允许将请求封装为一个对象,从而使不同的请求可以被参数化、队列化、记录日志、撤销等操作。该模式的核心是将请求的发起者和执行者解耦,以便更好地管理和扩展系统
二、命令模式的优缺点:
优点:
-
解耦:命令模式可以将请求者和接收者解耦,请求者不需要知道接收者的具体实现,只需要知道命令即可。
-
可扩展性:可以很容易地添加新的命令,只需要添加一个新的命令类即可。
-
可撤销:命令模式可以实现撤销和重做操作,可以很方便地回滚操作。
-
可记录:命令模式可以记录操作日志,方便后续分析和处理。
-
安全性:命令模式可以提高系统的安全性,因为可以限制命令的权限。
-
灵活性:命令模式可以根据需求灵活地组合命令,实现复杂的操作
缺点:
-
代码多余:实现命令模式需要创建多个类,这可能会导致代码过于冗长。
-
额外的内存开销:每个命令对象都需要额外的内存开销,这可能会导致系统的性能下降。
-
可能会导致系统复杂性增加:实现命令模式需要创建多个类,这可能会导致系统变得更加复杂。
-
可能会导致系统响应时间增加:由于命令模式需要创建多个对象,这可能会导致系统响应时间变慢。
-
可能会导致代码难以理解:由于命令模式需要创建多个类和对象,这可能会导致代码难以理解和维护。
三、命令模式的结构:
Command(manager):定义命令接口,生命执行的方法
ConcreteCommand(ManageForAdd或者ManageForDelete):命令接口实现对象
Receiver(Product,Front,Back)
invoker:接受命令并执行
四、命令模式实战:
以上图为示例,现在有甲方要求做出一个功能,而甲方需要找到项目对接人,不想事无巨细的去与每个组进行沟通,具体命令就有项目经理去下达一项项命令,指挥对应的组去完成
1.创建项目组(Product.Front,Back以及公共接口):
2.创建命令类及其抽象类
3.创建Invoker
4.测试
5.测试结果:
五.总结:
命令模式适用于以下场景:
-
需要将请求发送给多个对象,但是不知道具体接收者是谁。
-
需要将请求排队或者记录请求日志。
-
需要实现可撤销操作。
-
需要实现事务性操作。
-
需要实现回滚操作。