命令设计模式
来源:互联网 发布:什么是共和 知乎 编辑:程序博客网 时间:2024/06/06 08:30
前言
将命令请求者和命令接收者进行解耦,以达到对内修改封闭,对外扩展开放的目的。命令接收者就相当于机器,可以执行不同的命令,但是对命令具体执行什么是不知情的。当一个命令接收者可以接收多种命令,且可接收的命令时可扩展时,这种情形下是比较适合应用命令陌生的。
命令模式UML图
- 命令Command封装命令的执行对象和执行行为。
- 命令接受者action()调用命令的执行行为, 确不知道具体命令执行情况。
按照命令模式的UML图,可以很容易在代码中设计出命令模式。
应用场景
设计一台遥控器,实现可以控制电灯,也可以控制洗衣机,也可以空调等功能。当收到打开电灯的命令时,室内电灯会被打开,当收到打开空调的命令时,空调会被打开。同时,将来遥控器可能还可以接收控制冰箱的指令。
代码实现
按照命令模式的UML图,很容易进行代码实现的。
public Interface Command{ public void execute();}public class LightOffCommand implements Command{ Light light; public void execute(){ light.off() }}public class Receiver{ Command command; public Receiver(Command command){ this.command = command; } public void action(){ command.execute() }}
代码结构一目了然,我这里只实现了Light命令的代码,其它控制空调等命令的代码跟Light一样。这样讲指令发送者和接受者解耦了。
阅读全文