做神马网站优化,网站建设服务多少钱,佛山网站建设咨询,丰县住房和城乡建设局网站命令模式 文章目录 命令模式什么时命令模式通过示例了解命令模式 什么时命令模式 命令模式(Command),将一个请求封装为一个对象#xff0c;从而使你可用不同的请求对客户进行参数化#xff1a;对请求排队或记录请求日志#xff0c;以及支持可撤销的操作。 通过示例了解命令模…命令模式 文章目录 命令模式什么时命令模式通过示例了解命令模式 什么时命令模式 命令模式(Command),将一个请求封装为一个对象从而使你可用不同的请求对客户进行参数化对请求排队或记录请求日志以及支持可撤销的操作。 通过示例了解命令模式
命令模式Command Pattern是一种行为设计模式它将请求封装为一个对象从而使你可用不同的请求参数化其他对象。命令模式也支持撤销操作。下面是一个简单的Java命令模式示例以控制家电设备为例
接受者接口家电设备接口
public interface Device {void on();void off();
}具体接收者电视
public class Television implements Device {Overridepublic void on() {System.out.println(Television is turned on.);}Overridepublic void off() {System.out.println(Television is turned off.);}
}具体接收者空调
public class AirConditioner implements Device {Overridepublic void on() {System.out.println(Air conditioner is turned on.);}Overridepublic void off() {System.out.println(Air conditioner is turned off.);}
}命令接口设备控制接口
public interface Command {void execute();
}具体命令打开设备的命令
public class TurnOnCommand implements Command {private Device device;public TurnOnCommand(Device device) {this.device device;}Overridepublic void execute() {device.on();}
}具体命令关闭设备的命令
public class TurnOffCommand implements Command {private Device device;public TurnOffCommand(Device device) {this.device device;}Overridepublic void execute() {device.off();}
}请求者遥控器
public class RemoteControl {private Command command;public void setCommand(Command command) {this.command command;}public void pressButton() {command.execute();}
}主程序
public class CommandPatternDemo {public static void main(String[] args) {RemoteControl remote new RemoteControl();Device television new Television();Command turnOnTelevision new TurnOnCommand(television);Command turnOffTelevision new TurnOffCommand(television);remote.setCommand(turnOnTelevision);remote.pressButton(); // 输出Television is turned on.remote.setCommand(turnOffTelevision);remote.pressButton(); // 输出Television is turned off.Device airConditioner new AirConditioner();Command turnOnAirConditioner new TurnOnCommand(airConditioner);Command turnOffAirConditioner new TurnOffCommand(airConditioner);remote.setCommand(turnOnAirConditioner);remote.pressButton(); // 输出Air conditioner is turned on.remote.setCommand(turnOffAirConditioner);remote.pressButton(); // 输出Air conditioner is turned off.}
}Device接口是接受者定义了设备的基本操作。Television和AirConditioner是具体接收者实现了Device接口。Command接口是命令接口定义了执行命令的方法TurnOnCommand和TurnOffCommand是具体命令它们持有设备对象并实现了execute方法。RemoteControl是请求者它持有一个命令对象并调用execute方法来执行命令。main方法展示了如何使用遥控器控制不同设备的开关操作。 通过命令模式我们可以轻松地添加新的设备和控制操作同时保持遥控器类的简洁。