这是一个应用命令设计模式的好例子吗?

时间:2012-10-12 16:16:46

标签: c# winforms design-patterns

private void button1_Click(object sender, System.EventArgs e)
{           
    Clipboard.SetDataObject(textBox1.Text,true);                                    
}

private void button2_Click(object sender, System.EventArgs e)
{
    if(Clipboard.GetDataObject().GetDataPresent(DataFormats.Text))
        textBox1.Text = Clipboard.GetDataObject().GetData(DataFormats.Text).ToString();
    else
        textBox1.Text  = "The clipboad does not contain any text";
}

我使用C#Windows Form Application

编写此应用程序

2 个答案:

答案 0 :(得分:3)

让我们谈谈模式和邪教。

你会听到很多关于“学习设计模式”和“如果你不使用设计模式就吮吸”和“你应该使用X模式”等等。有一个完整的模式运动正在进行......一个邪教,甚至......鼓励人们模仿一切。说这是人们应该做的事情。对于所有事情都有一种模式,并且通过$ DEITY,你应该使用它。

猜猜是什么?其中约80%是垃圾。他们过分强调设计模式的作用和范围。

模式是工具。而已。他们不是自己存在的理由。它们不是世界和平的关键。它们不是所有问题的解决方案,你不应该只因为它们在那里使用它们,或者因为你喝了邪教徒的Kool-Aid。你应该只在因为它们是你需要做的工作时才使用它们,因此它们是有意义的。

设计模式的整体目的 - 仅用于 目的 - 是为了降低整体复杂性。* 无论他们不这样做,他们都不合适,你应该忽略它们

因此,每当您考虑使用某种特定模式时,请问自己一个最重要的问题:如何简化事情?

*注意,我说整体复杂性。应用设计模式通常会增加应用程序的一部分的复杂性,以便从其他部分中删除更多的部分。只要存在复杂性的净损失,该模式仍然值得关注。


现在,关于你的代码。

您已经询问过如何更改该小片段以使用Command模式。我想这是可能的;我看到“复制”和“粘贴”动作,可以想象通过对文本框的引用进行参数化。

问题是:如何简化事情?

除了该片段之外没有任何上下文,我不知道如何通过添加CopyCommand和PasteCommand类以及代码来实例化并在一个地方使用它们。也许当你在其他地方进行大量的复制和粘贴时,它可能是值得的......但是现在,没有。感觉就像你试图在一个不想去的地方兜售一个模式。

答案 1 :(得分:0)

  

使用命令设计模式编写此内容的正确方法是什么?

首先,阅读并理解cHao在他的答案中所写的内容。 (他并不是说设计模式很糟糕。他说很多人使用谈论使用设计模式的方式很糟糕。我同意...... )

你的问题没有一个好的答案:

首先,您需要问问自己为什么要在这里尝试使用任何设计模式。如果你只是因为你被告知使用设计模式是一件好事,那你就是出于错误的原因。

其次,重复用“命令设计模式”替换“任何设计模式”的问题......你想通过应用这种特殊的设计模式来实现这一目标?如果你不能回答这个问题,那么你需要1)返回并查看命令设计模式,理解它实现的目标,然后2)然后决定你是否真的需要它在你的实现中取得的成就程序

如果我要直接回答你的初步和后续问题,我不得不说:

  • 示例代码段似乎没有使用命令设计模式
  • 没有看到你的其余代码,我不能说是否根本就是在使用那个设计模式,
  • 没有看到你的其余代码,我不能说 应该如何使用该设计模式。