命令队列

问题描述

| 因此,我有一个正在使用的数据库sql)管理程序,用于处理公司出售的物品。对于程序的主要部分,项目信息会随着用户使用一些自定义控件进行更新。一切正常。但是现在我进入了程序的更高级别的部分,即添加/删除/复制项目。就像编辑项目信息一样,这不能是“即时更新”,因为将事情搞砸很容易。所以我基本上想在这里为他们设置文件->保存交易类型。我如何看待这项工作是在列表中创建所有sql命令,然后在保存时全部运行它们。 此处可用的功能添加新项目,删除项目,从另一个项目复制以及重命名。 因此,它将是这样的列表:
insert...
update...
update...
delete...
update...
etc.
它将运行并执行所有命令。我遇到的问题是我已经有了一个具有处理所有这些功能方法的类。我想不出一种方法来在队列中调用所有这些方法,而在另一个类中重写所有sql语句对我来说似乎很愚蠢。有没有办法让我记住类似以下内容的列表:
item.Rename()
item.ChangeSize()
item.Delete()
我觉得我在想这个……或者在想不到……我不知道。     

解决方法

您正在寻找的是2英镑。 基本思想是您有一个
ICommand
接口,其方法为
Execute()
。 然后您实现多个
ConcreteCommand
,例如带有参数化构造函数的
RenameCommand
或属性
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);
    }
}