官方网站包括哪几个网站,建站优化办事效率高,html编辑器在哪,网站视频解析软件设计模式#xff08;Design pattern#xff09;#xff0c;又称设计模式#xff0c;是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性、程序的重用性。 汇总目录链接… 软件设计模式Design pattern又称设计模式是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性、程序的重用性。 汇总目录链接【玩转23种Java设计模式】学习目录汇总整理 文章目录 一、简介二、实例1、命令接口Command2、灯Light3、打开灯的命令LightOnCommand4、关闭灯的命令LightOffCommand5、遥控器RemoteControl6、客户端CommandPatternExample 三、总结1、优点2、缺点3、应用场景 一、简介 命令模式Command Pattern是一种行为型设计模式它将请求封装成对象从而使得可以使用不同的请求、队列或日志来参数化其他对象同时支持可撤销的操作。该模式的核心是将“请求”抽象为独立的对象这样可以更灵活地设计系统的各个模块。
主要角色
Command命令接口定义命令执行的接口。ConcreteCommand具体命令类实现命令接口绑定一个接收者并实现具体的动作。Invoker调用者持有命令对象并触发执行。Client客户端创建命令对象并设置其接收者和调用者。
二、实例
例如模拟智能家居中的灯光控制场景。
1、命令接口Command
interface Command {void execute();void undo();
}2、灯Light
class Light {public void on() {System.out.println(The light is ON.);}public void off() {System.out.println(The light is OFF.);}
}3、打开灯的命令LightOnCommand
class LightOnCommand implements Command {private Light light;public LightOnCommand(Light light) {this.light light;}Overridepublic void execute() {light.on();}Overridepublic void undo() {light.off();}
}4、关闭灯的命令LightOffCommand
class LightOffCommand implements Command {private Light light;public LightOffCommand(Light light) {this.light light;}Overridepublic void execute() {light.off();}Overridepublic void undo() {light.on();}
}5、遥控器RemoteControl
class RemoteControl {private Command command;public void setCommand(Command command) {this.command command;}public void pressButton() {command.execute();}public void pressUndo() {command.undo();}
}6、客户端CommandPatternExample
public class CommandPatternExample {public static void main(String[] args) {Light livingRoomLight new Light();Command lightOn new LightOnCommand(livingRoomLight);Command lightOff new LightOffCommand(livingRoomLight);RemoteControl remote new RemoteControl();// 打开灯remote.setCommand(lightOn);remote.pressButton();// 撤销操作remote.pressUndo();// 关闭灯remote.setCommand(lightOff);remote.pressButton();// 撤销操作remote.pressUndo();}
}三、总结
1、优点
解耦请求与实现命令模式将请求的发送者和接收者解耦使得发送者无需知道接收者的具体实现。支持撤销与重做通过在命令类中添加撤销逻辑可以轻松实现撤销和重做功能。灵活扩展可以很方便地新增命令而不需要修改现有代码。
2、缺点
命令类较多对于每一个具体操作都需要一个命令类增加了类的数量和系统复杂性。请求链复杂如果命令链较长可能会导致请求的跟踪和管理变得困难。
3、应用场景
事务性操作例如数据库操作的撤销和重做。任务队列系统将操作排队执行例如打印队列、任务调度。GUI开发按钮的点击事件可以通过命令模式封装。日志记录记录每个命令的执行便于系统回滚或重做操作。