跟我一起学“仓颉”设计模式-命令模式
本章为大家详细的介绍了仓颉设计模式中命令模式的内容。
·
目录
一、命令模式
命令模式:将一个请求封装为一个对象,从而可用不同的请求对客户进行参数化,请求排队或者记录请求日志,以及支持可撤销的操作(行为型)。
命令模式角色:
- 抽象命令类:抽象命令类一般是抽象类或者接口,在里面声明了执行请求的方法;
- 具体命令类:实现了抽象命令类的方法;
- 调用者:通过命令对象执行请求;
- 接收者:执行与请求相关的操作。
二、实现
在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
}
三、优缺点
优点:
- 降低系统的耦合度,由于请求者与接收者之间不存在直接引用,因此请求者与接收者完全解耦;
- 新的命令可以容易地加入到系统中,满足开闭原则。
缺点:
- 使用命令模式可能会导致某些系统中有过多地具体命令类。
四、适合环境
- 系统需要将请求者和接收者解耦,使得请求者和接收者互不解耦;
- 系统需要在不同地时间指定请求、将请求排队和执行请求。
五、小结
本章为大家详细的介绍了仓颉设计模式中命令模式的内容,下一章,为大家带来命令模式练习题的内容。最后,创作不易,如果大家觉得我的文章对学习仓颉设计模式有帮助的话,就动动小手,点个免费的赞吧!收到的赞越多,我的创作动力也会越大哦,谢谢大家🌹🌹🌹!!!
更多推荐
所有评论(0)