释义
命令模式,将请求封装为命令类,传给调用类,调用类寻找合适的对象执行命令。
调用类Call
,使用Command
命令。将BuyFood
和SellFood
两条命令交给Food
去执行,分别调用Food
中的buy()
和sell()
。
命令
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
interface Command() {
fun execute()
}
class BuyFood(val food: Food) {
fun execute() {
food.buy()
}
}
class SellFood(val food: Food) {
fun execute() {
food.sell()
}
}
|
请求类
1
2
3
4
|
class Food {
fun buy() { ... }
fun sell() { ... }
}
|
调用类
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
class Call(
// 创建一个命令队列
val commands: MutableList<Command> = mutableListOf<Command>()
) {
// 向命令队列中新增命令
fun addCommand(command: Command) {
list.add(command)
}
// 执行命令
fun executeCommand() {
for(command in commands) {
command.execute()
}
}
}
|
使用
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
fun main() {
// 命令目标对象
val food: Food = Food()
// 命令
val buyFood: BuyFood = BuyFood()
val sellFood: SellFood = SellFood()
// 命令调度器
val call: Call = Call()
// 添加命令
call.addCommand(buyFood)
call.addCommand(sellFood)
// 执行命令
call.executeCommand()
}
|