一、命令模式命令模式将一个请求封装为一个对象从而可用不同的请求对客户进行参数化请求排队或者记录请求日志以及支持可撤销的操作行为型。命令模式角色抽象命令类抽象命令类一般是抽象类或者接口在里面声明了执行请求的方法具体命令类实现了抽象命令类的方法调用者通过命令对象执行请求接收者执行与请求相关的操作。二、实现在src目录下新建一个command文件夹在该文件夹下新建一个command.cj文件和command.drawio文件。类图核心代码package DesignPattern.command // 抽象命令类 public abstract class Commamd { public func execute(): Unit } // 调用者 public class Button { public Button(private let command: Commamd) {} public func click() { print(点击功能键: ) this.command.execute() } } // 接收者 private class Exit { public func exit() { println(退出系统) } } private class Help { public func help() { println(显示帮助文档) } } // 具体命令类 public class ExitCommand : Commamd { private let exit: Exit public init() { this.exit Exit() } public override func execute() { this.exit.exit() } } public class HelpCommand : Commamd { private let help: Help public init() { this.help Help() } public override func execute() { this.help.help() } }测试代码package DesignPattern import DesignPattern.command.* main(): Int64 { var button Button(HelpCommand()) button.click() button Button(ExitCommand()) button.click() return 0 }三、优缺点优点降低系统的耦合度由于请求者与接收者之间不存在直接引用因此请求者与接收者完全解耦新的命令可以容易地加入到系统中满足开闭原则。缺点使用命令模式可能会导致某些系统中有过多地具体命令类。四、适合环境系统需要将请求者和接收者解耦使得请求者和接收者互不解耦系统需要在不同地时间指定请求、将请求排队和执行请求。五、小结本章为大家详细的介绍了仓颉设计模式中命令模式的内容下一章为大家带来命令模式练习题的内容。最后创作不易如果大家觉得我的文章对学习仓颉设计模式有帮助的话就动动小手点个免费的赞吧收到的赞越多我的创作动力也会越大哦谢谢大家