Unity部分待更新
命令模式是一种数据驱动的设计模式
是属于行为型的模式
主要实现是把请求/命令/行为封装成一个对象
然后你就可以用不同的请求传递给要实现的请求对象
让他执行对应的操作
具体拆分就是四部分组成
- 命令中心:管理和发出命令
- 命令接口:基础 定义了执行命令的方法
- 命令接口实现:注册命令执行者 重写接口的执行方法
- 命令执行者:定义并在接受命令后执行对应的行为
当使用的时候
我们实例化一条命令 并把它传进命令中心
命令中心接收到命令后存放进命令仓库(List)
然后在某一时刻命令中心收到了执行命令的指令
就会从仓库里依次取出命令并且执行
C#的实现可参考下列代码(.net 6.0所以省略了main)
Test test = new(); DoCommand doCommand = new(test); CommandCenter center = new(); center.AddCommand(doCommand); center.DoneCommand(); /// <summary> /// 命令中心 /// </summary> public class CommandCenter { private List<Command> commandList = new(); public void AddCommand(Command command) { commandList.Add(command); } public void DoneCommand() { foreach(var command in commandList) { command.Execute(); } commandList.Clear(); } } /// <summary> /// 命令接口 /// </summary> public interface Command { void Execute(); } /// <summary> /// 命令接口实现 /// </summary> public class DoCommand : Command { private Test test; public DoCommand(Test test) { this.test = test; } public virtual void Execute() { test.Buy(); } } /// <summary> /// 测试类 /// </summary> public class Test { public void Buy() { Console.WriteLine("买东西"); } public void Sell() { Console.WriteLine("卖东西"); } }
命令模式降低了系统的耦合度
但同时因为每个命令都要实现一个具体的类
有可能会出现命令类泛滥的情况
那么这样的模式在Unity当中要如何运用呢