命令模式实例
//抽象接受者,用来处理命令的
public abstract class Receive  {
    public abstract void Do();
}
//抽象命令
public interface ICommand  {
    
    void execude();
}
//具体命令
public class ACommand : ICommand
{
    private Receive mReceive;

    public ACommand(Receive r)
    {
        mReceive = r;
    }

    public void execude()
    {
        mReceive.Do();
    }
}
//具体接受者
using UnityEngine;

public class AReceive : Receive
{
    public override void Do()
    {
        Debug.Log("A Command execude");
    }
}
//调用者,负责调用命令的
public class Invoker {

    private ICommand command;

    public void SetCommand(ICommand c)
    {
        command = c;
    }

    public void action()
    {
        command.execude();
    }
}
//测试使用
using UnityEngine;

public class testCommand : MonoBehaviour {
    
	void Start () {
        AReceive aReceive = new AReceive();
        ICommand command = new ACommand(aReceive);

        Invoker invoker = new Invoker();
        invoker.SetCommand(command);
        invoker.action();
	}
}

主要分为3种角色

Command类型就是一个命令,本省不包含处理的方法,用于识别。

Receiver接受者,就是接受到命令后,处理的。

Invoker调用者,就是命令的触发者。


首页 我的博客
粤ICP备17103704号