-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%くらいがゴミです。彼らはデザインパターンの役割と範囲を過度に強調しています。

パターンはツールです。これ以上何もない。それらは存在する独自の理由ではありません。彼らは世界平和の鍵ではありません。それらはすべての問題の解決策ではありません。それらがそこにあるという理由だけで、またはカルト信者のクールエイドを飲んだという理由だけでそれらを使用するべきではありません。これらは、実行する必要がある仕事のためのものであり、意味がある場合にのみ使用する必要があります。

設計パターンの全体的な目的 (その唯一の目的) は、全体的な複雑さを軽減することです*。 それを行わない場合は、適切ではなく、無視する必要があります。

したがって、特定のパターンを使用することを考えるたびに、最も重要な質問を 1 つ自問してください

* 注、私は全体的な複雑さを言いました。多くの場合、デザイン パターンを適用するには、アプリの一部に複雑さを追加して、他の部分から多くの部分を削除する必要があります。複雑さが完全に失われる限り、このパターンは一見の価値があります。


さて、あなたのコードについて。

Command パターンを使用するために、その小さなスニペットを変更することについて質問されました。可能だと思います。「コピー」および「貼り付け」アクションが表示されます。これらは、テキスト ボックスへの参照を使用してパラメーター化できると考えられます。

ただし、問題は次のとおりです。どのように物事を単純化するのでしょうか?

そのスニペット以外のコンテキストがなければ、CopyCommand クラスと PasteCommand クラスを追加し、それらをインスタンス化して正確に 1 か所で使用するコードからどのように得られるかわかりません。おそらく、他の場所で多くのコピーと貼り付けを行っている場合は、それだけの価値があるかもしれません...しかし、今は違います. 行きたくないところにパターンを押し付けようとしているように感じます。

于 2012-10-12T22:26:11.900 に答える
0

コマンド設計パターンを使用してこれを記述する正しい方法は何ですか?

まず、cHao が回答に書いた内容を読んで理解してください。(彼はデザインパターンがくだらないと言っているのではありません。彼は、多くの人がデザインパターンを使用したり話したりする方法がくだらないと言っているのです。私は同意します...)

あなたの質問には良い答えがありません:

まず、ここでデザイン パターンを使用しようとしている理由を自問する必要があります。デザインパターンを使うのは良いことだと言われているからやっているだけなら、それは間違った理由でやっているのです。

次に、「すべてのデザイン パターン」を「コマンド デザイン パターン」に置き換えて、その質問を繰り返します。この特定のデザイン パターンを適用して、ここで何を達成しようとしていますか? それに答えられない場合は、1) コマンドの設計パターンに戻って確認し、それが何を達成するかを理解し、2) プログラムで実際にそれが達成する必要があるかどうかを判断する必要があります。

最初の質問とフォローアップの質問に直接答えるとしたら、次のように言わなければなりません。

  • サンプル コード スニペットはコマンド デザイン パターンを使用していないようです。
  • コードの残りの部分を見ないと、そのデザイン パターンを使用する必要があるかどうかはわかりません。
  • コードの残りの部分を見ないと、そのデザイン パターンをどのように使用すべきかわかりません。

于 2012-10-13T03:48:06.107 に答える