0

コマンドパターンを使用してアプリケーションを開発しています。プログラムには 2 種類の操作があります。1. 非同期で実行する必要がある長時間の操作 (ファイルのコピー/削除) 2. 単純な操作 (パネルの更新)

私の質問は: このパターンで 2 種類のコマンド (AsyncCmd と SimpleCmd) を実装できますか? Command Manager で実行する前に、コマンドの種類を確認します。

public void Execute()
   {
     if(cmd is AsyncCmd)
        {
         RunAsyncOperation();
        }
     else if(cmd is SimpleCmd)
        {
         RunOperation();
        }
   }
4

1 に答える 1

2

可能ですが、操作のタイプを定義するためにif elseを使用すると、コマンドパターンの目的が無効になります。非同期と単純(おそらく同期)は、それぞれがICommand(1つのメソッドExecute()を持つ)を継承する別々のコマンドである必要があります。これらのコマンドは、コマンド固有のコンテキストを処理できるファクトリを使用して作成する必要があります。たとえば、非同期操作などで特別なことを行う必要があります。

于 2012-11-03T20:15:24.213 に答える