Android 开发中的命令模式
1. 什么是命令模式?
命令模式(Command Pattern)是一种行为型设计模式,它将“请求”封装成一个对象,使得可以用不同的请求、队列、日志、撤销和恢复操作来参数化其他对象。
简单类比:
遥控器是命令模式的经典例子。遥控器上的每个按钮(命令)执行不同的功能(如开灯、关灯、调节音量)。遥控器的功能可以随时更改,而不需要改变按钮本身的设计。
2. 命令模式的核心组成部分
- Command(命令接口):定义命令执行的方法。
- ConcreteCommand(具体命令类):实现
Command接口,封装一个或多个接收者的操作。 - Receiver(接收者):实际执行命令的对象。
- Invoker(调用者):持有命令并触发执行。
- Client(客户端):创建命令对象,并将其分配给调用者。
3. UML 类图
以下是命令模式的 UML 类图,标注了具体的关系。

4. 代码示例:遥控器开关灯功能
假设需要实现一个遥控器来控制灯的开关,使用命令模式的实现如下:
// Command: 命令接口
interface Command {
void execute();
}
// Receiver: 接收者类,实际执行命令的逻辑
class Light {
public void turnOn() {
System.out.println("灯已打开");
}
public void turnOff() {
System.out.println("灯已关闭");
}
}
// ConcreteCommand: 具体命令类,用于打开灯
class TurnOnLightCommand implements Command {
private Light light;
public TurnOnLightCommand(Light light) {
this.light = light;
}
@Override
public void execute() {
light.turnOn();
}
}
// ConcreteCommand: 具体命令类,用于关闭灯
class TurnOffLightCommand implements Command {
private Light light;
public TurnOffLightCommand(Light light) {
this.light = light;
}
@Override
public void execute() {
light.turnOff();
}
}
// Invoker: 调用者,持有命令并触发执行
class RemoteControl {
private Command command;
public void setCommand(Command command) {
this.command = command;
}
public void pressButton() {
command.execute();
}
}
// Client: 客户端,负责组装命令、接收者和调用者
public class CommandPatternDemo {
public static void main(String[] args) {
Light livingRoomLight = new Light();
// 创建命令
Command turnOn = new TurnOnLightCommand(livingRoomLight);
Command turnOff = new TurnOffLightCommand(livingRoomLight);
// 配置调用者
RemoteControl remote = new RemoteControl();
// 打开灯
remote.setCommand(turnOn);
remote.pressButton();
// 关闭灯
remote.setCommand(turnOff);
remote.pressButton();
}
}
输出:
灯已打开
灯已关闭
5. UML 演示优化
在上述代码的基础上,标注具体关系:
1. Command 与 ConcreteCommand:实现关系。
2. Invoker 与 Command:组合关系。
3. ConcreteCommand 与 Receiver:组合关系。
6. Android 中的实际应用
-
事件处理:
- 在 Android 中,通过
View.OnClickListener实现按钮点击事件的回调,本质上就是一种命令模式的体现。
- 在 Android 中,通过
-
任务调度:
- 使用
Handler来封装消息和任务,发送到主线程进行处理。
- 使用
-
动画系统:
- 使用
ObjectAnimator调用一系列命令(如start、pause等)来控制动画效果。
- 使用
-
全局操作管理:
- 实现撤销/重做功能(如编辑器或画板应用),可以通过保存命令队列实现。
7. 记忆与总结
记忆口诀:
请求封装变对象,调用执行两分离;命令扩展灵活化,解耦复杂又便捷。
通过引入命令模式,可以清晰地分离命令、接收者和调用者,使系统具有良好的扩展性和可维护性。
当前文章价值2.76元,扫一扫支付后添加微信提供帮助!(如不能解决您的问题,可以申请退款)

你可能感兴趣的文章
分类:设计模式
标签:Android常用设计模式, 命令模式
评论已关闭!