欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

设计模式—命令模式实现撤销

程序员文章站 2022-06-19 14:46:22
总结一下工作中用到的这个设计模式,,看了下大话设计模式里好像也有这个,,以后看到了在完善吧,,现在这个是项目要求实现一个撤销功能,就跟我说用命令模式写就行~听简单的~QAQ然后看了很多关于命令模式的博客,感觉我写的应该差不多吧,,应该没有理解错,直接放代码public class 命令模式 : MonoBehaviour{CommandManager comdMag = new CommandManager();public int TestValue = 0;// Start is...

总结一下工作中用到的这个设计模式,,看了下大话设计模式里好像也有这个,,以后看到了在完善吧,,现在这个是项目要求实现一个撤销功能,就跟我说用命令模式写就行~听简单的~QAQ

然后看了很多关于命令模式的博客,感觉我写的应该差不多吧,,应该没有理解错,直接放代码

public class 命令模式 : MonoBehaviour
{
	CommandManager comdMag = new CommandManager();
	public int TestValue = 0;
	// Start is called before the first frame update
	void Start()
    {
		TestCommand testCommand = new TestCommand(TestValue);
		comdMag.Excute(testCommand);

		comdMag.Undo();
	}
}
public interface ICommand
{
	void Excute();
	void Udon();
}
public class CommandManager
{
	//这里用Stack比较方便,但是Stack不知道怎么限制数量,,还得从头部去掉一个
	public List<ICommand> comList = new List<ICommand>();

	public void Excute(ICommand comd)
	{
		comd.Excute();
		comList.Add(comd);
		
	}
	public void Undo()
	{
		var lastComd = comList[comList.Count - 1];
		lastComd.Udon();
		comList.RemoveAt(comList.Count - 1);
	}
}
public class TestCommand : ICommand
{
	int value;
	public TestCommand(int value)
	{
		this.value = value;
	}
	public void Excute()
	{
		value = 10;
		Debug.Log(value);
	}

	public void Udon()
	{
		value = 0;
		Debug.Log(value);
	}
}

 

设计模式—命令模式实现撤销

当时是还有一个恢复功能,其实跟撤销一样的原理,你们肯定能自己写出来的!!!(绝不是因为我懒不想写)

 

本文地址:https://blog.csdn.net/ztysmile/article/details/111088187

相关标签: 设计模式 Unity