-7
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 窗体应用程序编写此应用程序

4

2 回答 2

3

让我们谈谈模式和邪教。

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

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

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

设计模式的全部目的——它们唯一的目的——是降低整体复杂性。* 无论它们不这样做,它们都不合适,你应该忽略它们

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

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


现在,至于您的代码。

您已经询问过要更改那个小片段以使用命令模式。我想这是可能的;我看到了“复制”和“粘贴”操作,可以想象这些操作可以通过对文本框的引用进行参数化。

但问题是:它将如何简化事情?

如果没有除该片段之外的任何上下文,我看不到您将如何从添加 CopyCommand 和 PasteCommand 类以及在一个地方实例化和使用它们的代码中获益。也许当您在其他地方进行大量复制和粘贴时,这可能是值得的……但现在,不。感觉就像你正试图在它不想去的地方硬塞一个模式。

于 2012-10-12T22:26:11.900 回答
0

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

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

你的问题没有很好的答案:

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

其次,重复这个问题,用“命令设计模式”替换“任何设计模式”……通过应用这个特定的设计模式,你想在这里实现什么?如果您不能回答这个问题,那么您需要 1)返回并查看 Command 设计模式,并了解它实现了什么,以及 2)然后决定您是否真的需要它在您的程序中实现的功能。

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

  • 示例代码片段似乎没有使用命令设计模式,
  • 在没有看到您的其余代码的情况下,我不能说它是否应该使用该设计模式,并且
  • 如果没有看到您的其余代码,我不能说它应该如何使用该设计模式。

于 2012-10-13T03:48:06.107 回答