- 定义:
将请求封装为对象 - 概述
命令模式的关键就是把请求封装为命令对象,制定统一的执行操作接口,所有的操作包括存储、转发、记录等都围绕这个对象进行。标准的命令模式会有以下几个类:
Command:命令的接口类,声明执行的方法
ConcreteCommand:具体的命令类,实现了Command,并持有接收者Receiver,调用接收者的相关方法来完成命令功能
Receiver:真正执行命令的对象
Invoker:调用命令的入口对象 - 实例(Kotlin语言)
以下是命令接口
interface Command {
fun execute()
}
以下是具体的命令
class LightOnCommand(val light: Light) : Command {
override fun execute() {
light.on()
}
}
以下是接收者
class Light {
fun on(): Unit {
println("电灯打开了。。。")
}
fun off(): Unit {
println("电灯关闭了。。。")
}
}
以下是Invoker
class SimpleRemoteControl {
lateinit var com:Command
fun setCommand(com: Command): Unit {
this.com = com
}
fun buttonWasPressed(): Unit {
com.execute()
}
}
以下是测试及结果
fun main(args: Array<String>) {
val simpleRemoteControl = SimpleRemoteControl()
val lightOnCommand = LightOnCommand(Light())
simpleRemoteControl.setCommand(lightOnCommand)
simpleRemoteControl.buttonWasPressed()
}
//结果
电灯打开了。。。
Process finished with exit code 0
- 类图
如有错误,请留言更正,或进580725421群讨论,以免误导其他开发者!!!