地下城做解封任务的网站,宣传网站建设背景,建设工程自学网站,中国建设银行分行网站命令模式
介绍
命令模式是一种行为类设计模式#xff0c;核心是将每种请求或操作封装为一个独立的对象#xff0c;从而可以集中管理这些请求或操作#xff0c;比如将请求队列化依次执行、或者对操作进行记录和撤销。 命令模式通过将请求的发送者#xff08;客户端#x…命令模式
介绍
命令模式是一种行为类设计模式核心是将每种请求或操作封装为一个独立的对象从而可以集中管理这些请求或操作比如将请求队列化依次执行、或者对操作进行记录和撤销。 命令模式通过将请求的发送者客户端和接收者执行请求的对象解耦提供了更大的灵活性和可维护性。
下面来举个例子
我们在生活中都用过电视机我们就相当于客户端要操作电视来换台而 电视 就是执行请求的对象要根据我们的操作来换台。但是我们一般不会直接按电视上的按钮来换台而是用一个 遥控器通过点击遥控器上的 操作按钮 来控制电视。 这样就相当于把我们和电视解耦了。哪怕遥控器丢了再换一个遥控器就好了而且现在手机都能作为万能的电视遥控器我们可以同时遥控多个品牌的设备不用关心设备的具体品牌型号提供了更大的方便。
优点
命令模式最大的优点就是解耦请求发送者和接受者让系统更加灵活、可扩展。
代码示例
Command.java
public interface Command {void execute();
}Device.java
public class Device {private String name;public Device(String name){this.name name;}public void turnOn(){System.out.println(name 设备打开);}public void turnOff(){System.out.println(name 设备关闭);}
}RemoteControl.java
public class RemoteControl {private Command command;public void setCommand(Command command){this.command command;}public void pressButton(){command.execute();}
}TurnOffCommand.java
public class TurnOffCommand implements Command {private Device device;public TurnOffCommand(Device device){this.device device;}public void execute(){device.turnOff();}
}TurnOnCommand
public class TurnOnCommand implements Command{private Device device;public TurnOnCommand(Device device){this.device device;}public void execute(){device.turnOn();}
}Client.java
public class Client {public static void main(String[] args) {// 创建接收者对象Device tv new Device(TV);Device microphone new Device(Microphone);// 创建具体命令对象可以绑定不同设备TurnOnCommand turnOn new TurnOnCommand(tv);TurnOffCommand turnOff new TurnOffCommand(microphone);// 创建调用者RemoteControl remote new RemoteControl();// 执行命令remote.setCommand(turnOn);remote.pressButton();remote.setCommand(turnOff);remote.pressButton();}
}运行结果 UML类图