跳至正文

命令模式解析和在Unity中的运用

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当中要如何运用呢

 

发表回复

您的电子邮箱地址不会被公开。