我应该使用Command模式而不是调用静态方法吗?

时间:2013-12-18 03:24:08

标签: c# oop design-patterns user-interface command-pattern

希望学习Command模式,我在C#中设置了一个带有两个按钮的简单GUI应用程序。第一个按钮使用(我的尝试)Command模式来执行操作,而第二个按钮只调用另一个类中的静态方法。

这是表单代码

    private void CommandButton_Click(object sender, EventArgs e)
    {
        ICommand command = new ConcreteCommand();
        command.Execute(); //Performs the same code as DoOperation()
    }

    private void StaticButton_Click(object sender, EventArgs e)
    {
        Helper.DoOperation(); //Performs the same code as Execute()
    }

我的问题是:

  1. 在这种情况下实施命令模式是否合适?
  2. 在这种特定情况下,在静态方法调用中使用命令模式有哪些优点/缺点?在其他“现实世界”情景中?
  3. 如果我的GUI设计将来发生变化,如果我使用静态函数调用而不是命令模式,是否会更难或者是否意味着对现有代码进行更多更改?

2 个答案:

答案 0 :(得分:2)

命令模式用于根据命令参数中的值执行一组操作,而在您显示的代码中,不依赖于当前状态。在你的情况下,我的静态方法会很好。

但是这并不总是如此,所以要仔细研究你的需要,然后选择继续前进的方式,我会选择Command Pattern,因为这样可以在将来更改需求时提供更大的灵活性。

答案 1 :(得分:0)

在您的案例中使用命令模式没有任何优势。此外,您的实施不正确。使用命令模式,创建命令的人与执行命令的人不同。这种差异允许你做一些有趣的事情,比如给别人执行命令的能力。

例如,命令是WPF的自然组成部分。在那里,您可以将命令对象DataBind到按钮,并将实际执行留给按钮。不需要事件等。与您的情况不同,您必须使用事件(假设您使用的是WinForms)