新しいコンポーネントを設計しており、コマンド設計パターンの使用を検討しています。
インターフェイスを実装する 2 つの主なコマンド タイプがありますIOurCommand
(そこから他のコマンドが継承されます)。
問題は、最初のコマンドCommandDoUpdates
は値を返す必要がないのに対し、2 番目のコマンドはデータをフェッチするため、いくつかのオブジェクトのCommandGetData
を返す必要があることです( )List
List<DataRow>
状況に対処するために私たちが検討していること:
- 操作の成功に関する指示 (ボーナス) を含む Class と、すべての の空のリストになるオブジェクトの List を返します
CommandDoUpdates
。 - 具体的なコマンドのメンバーとして保持する
List
- 潜在的な解決策ですが、他の理由で私たちの生活を困難にします (浅いコピーと深いコピーなど)。 - #1 と同じですが、関数内で基本クラスを返します。呼び出し元のすべての呼び出しは、結果を具体的なクラスにダウン キャストする必要があります (クライアントは実際の戻り値を知る必要があるため、ダウン キャストはお勧めできません) )。
- コマンドを 2 つの異なる階層 (値を返すものと返さないもの) に分割し、2 つの異なるレシーバーを使用する - 私は本当に好きではありませんが、それはオプションです。
この投稿は、コマンドが値/ステータスを返す必要があるかどうかについての良い読み物です。これは、GoF の本では Command 設計パターンが値を返さないため、関連しています。
私の実際の質問は次のとおりです。
- より良い解決策を考えられますか?
- オプション 1、2、3 の長所と短所、オプション 4 の長所はありますか?
ありがとう!