【命令模式】个人理解就是一种单纯的解耦吧,把原本的像switch case,if else这种拆分开了,方便扩展和维护。
贴代码:
using UnityEngine;
/// <summary>
/// 设计模式——命令模式
/// </summary>
public class DesignMode_Command : MonoBehaviour {
// Use this for initialization
void Start () {
Leader leader = new Leader();
ITMonkey monkey = new ITMonkey();
DoCommand dc = new DoCommand();
leader.ReleaseCommand(dc,monkey);
AddCommand ac = new AddCommand();
leader.ReleaseCommand(ac, monkey);
CancleCommand cc = new CancleCommand();
leader.ReleaseCommand(cc, monkey);
}
}
/// <summary>
/// 命令基类
/// </summary>
public abstract class Command
{
public abstract void SetCommand();
public abstract void Excute(ITMonkey monkey);
}
public class DoCommand : Command
{
public override void Excute(ITMonkey monkey)
{
monkey.Action();
}
public override void SetCommand()
{
Debug.Log("来活了");
}
}
public class AddCommand : Command
{
public override void Excute(ITMonkey monkey)
{
monkey.Action();
}
public override void SetCommand()
{
Debug.Log("把这个需求加上");
}
}
public class CancleCommand : Command
{
public override void Excute(ITMonkey monkey)
{
monkey.Action();
}
public override void SetCommand()
{
Debug.Log("撤销命令");
}
}
public class Leader
{
public Command mCommand;
public ITMonkey mMonkey;
/// <summary>
/// 下达命令
/// </summary>
/// <param name="command"></param>
public void ReleaseCommand(Command command,ITMonkey monkey)
{
command.SetCommand();
command.Excute(monkey);
}
}
/// <summary>
/// 程序员
/// </summary>
public class ITMonkey
{
/// <summary>
/// 执行命令
/// </summary>
public void Action()
{
Debug.Log(string.Format("加班敲代码......"));
}
}
其实程序员类里面应该有多个Action的,根据传过来的命令不同做出不同的反应,但是我一想,能做出的反应除了改代码、写代码好像也没啥其他行为~(皮这一下,我很开心)。