所以我有一个数据库(sql)管理程序,我一直在处理,处理我公司销售的项目.对于程序的主要部分,项目信息在用户使用一些自定义控件时更新.一切正常.但现在我进入程序的更高级别部分,即添加/删除/复制项目.这不能像动态更新一样,就像编辑项目信息一样,因为它太容易搞砸了.所以我基本上想在这里为他们设置一个文件 - >保存类型的交易.我如何看待这个工作是在列表中创建所有sql命令,然后在保存时运行它们.
这里可用的功能是添加新项目,删除项目,从其他项目复制和重命名.
所以这将是一个列表:
insert...
update...
update...
delete...
update...
etc.
Run Code Online (Sandbox Code Playgroud)
它将贯穿并执行所有命令.我遇到的问题是我已经有一个类,它有方法来处理所有这些函数.我想不出一种在队列中调用所有这些方法的方法,并且在另一个类中重写所有sql语句对我来说似乎很愚蠢.有没有办法让我记住一个类似的列表:
item.Rename()
item.ChangeSize()
item.Delete()
Run Code Online (Sandbox Code Playgroud)
我觉得我正在思考这个...或者可能没有思考......我不知道.
你要找的是一个Command Pattern.
基本思想是你有一个ICommand有方法的接口Execute().
然后你实现多个ConcreteCommand,例如RenameCommand带有参数化构造函数或属性的a NewName.
不要忘记相应地处理异常,也可以实现Undo-Method,如果这些可能发生的话.我不太了解您的应用程序在这里做出假设.
public interface ICommand
{
void Execute();
}
public class RenameCommand : ICommand
{
private string newName;
public RenameCommand(string newName)
{
this.newName = newName;
}
void ICommand.Execute()
{
item.rename(newName);
}
}
Run Code Online (Sandbox Code Playgroud)