谈到代码编辑器,基本功能的“撤销与重做”是必不可少的。
刚好最近看了设计模式的“命令模式”,做这个倒是正好
简单来说,就是把所以可以撤销的方法封装成类
这里有个简单的测试例子,演示了用“命令模式”实现的“撤销”功能
这里是两个基本接口
// 命令接口,所有能被编辑器接受命令都从这里继承
public interface ICommand
{
void Execute();
}
// 可撤销的命令借口,所有可撤销的命令都从这里继承
public interface IUndoCommand : ICommand
{
void Undo();
}
接下来是具体的命令
// 插入一个字符到编辑器的命令
public class InsertCharacterCommand : IUndoCommand
{
private CodeManager codeManager;
private int index;
private char ch;
public InsertCharacterCommand(CodeManager setCodeManager, int setIndex, char setCh)
{
this.codeManager = setCodeManager;
this.index = setIndex;
this.ch = setCh;
}
public void Execute()
{
codeManager.InserCharacter(index, ch);
}
public void Undo()
{
codeManager.

这篇博客介绍了如何利用设计模式中的‘命令模式’来实现代码编辑器中的撤销与重做功能。通过定义两个接口,将可撤销的操作封装为类,并在Coder类中调用CodeManager的函数来执行这些操作。通过简单的测试,展示了如何在实际应用中输入、撤销和重做代码。此外,还扩展了删除字符的命令,以增强编辑器的功能。
最低0.47元/天 解锁文章
617

被折叠的 条评论
为什么被折叠?



