现在建设的网站有什么劣势,判断网站cms,上海浦东新区科技网站建设,重庆科技建设信息网站文章目录 命令举例撤销C# 例子 命令
命令模式 Command 指的是一个 执行某些特定事情的指令
应用场景#xff1a;有时需要向某些对象发送请求#xff0c;但并不知道请求的接受者是谁#xff0c;也不知道被请求的操作是什么。这时候命令模式就负责使发送者和接受者之间解耦 … 文章目录 命令举例撤销C# 例子 命令
命令模式 Command 指的是一个 执行某些特定事情的指令
应用场景有时需要向某些对象发送请求但并不知道请求的接受者是谁也不知道被请求的操作是什么。这时候命令模式就负责使发送者和接受者之间解耦
命令模式把请求封装成 Command 对象这个对象可以在程序中四处传递接受者不需要知道发送者是谁解开了调用者和接受者之间的耦合
举例
假如我们正在编写一个 UI 界面由于项目复杂我们让一个程序员负责绘制按钮另外的程序员负责编写点击按钮后的具体行为这些行为都被封装在命令对象里
让我们创建一个命令对象用来控制 电视 的行为
const TVCommand {// 打开电视turnOn: function() {console.log(电视已打开);},// 关闭电视turnOff: function() {console.log(电视已关闭);},// 切换频道changeChannel: function(channel) {console.log(频道已切换至 channel);}
};接下来绘制 UI 时给按钮加上发送指令的功能这里也是可以再次进行抽象和解耦的
const turnOnButton document.getElementById(turnOnButton);
const turnOffButton document.getElementById(turnOffButton);
const changeChannelButton document.getElementById(changeChannelButton);turnOnButton.addEventListener(click, function() {TVCommand.turnOn();
});turnOffButton.addEventListener(click, function() {TVCommand.turnOff();
});changeChannelButton.addEventListener(click, function() {const channel document.getElementById(channelInput).value;TVCommand.changeChannel(channel);
});撤销
命令模式还有一个好处就是可以进行命令的撤销实现方法根据场景设计这里就不给出例子了
C# 例子
如同过去的几个章节这里给出 C# 版本的例子
using System;// 命令接口
public interface ICommand
{void Execute();
}// 具体命令
public class SimpleCommand : ICommand
{private string _message;public SimpleCommand(string message){_message message;}public void Execute(){Console.WriteLine(_message);}
}// 命令执行者
public class CommandExecutor
{public void ExecuteCommand(ICommand command){command.Execute();}
}class Program
{static void Main(string[] args){// 创建命令和命令执行者ICommand command new SimpleCommand(Hello, World!);CommandExecutor executor new CommandExecutor();// 执行命令executor.ExecuteCommand(command);}
}