1

次の UI コンポーネントを含むアプリケーションがあります。

  • メインメニュー
  • フォルダ ツリー
  • クエリビルダー
  • タブ付きリスト (各タブには、データ エンティティを表示できるグリッドがあります)

アプリケーションは MVC に基づいているため、上記の各コンポーネントにはコントローラーとビューがあります。

最初の 3 つのコンポーネントは、データ エンティティをリストに (新しいタブとして) 表示する必要があります。

  • フォルダをダブルクリックすると、フォルダの項目が新しいリストに表示されます。
  • クエリビルダーの検索ボタンをクリックすると、検索結果が新しいタブで開きます。
  • 「開く...」メニュー項目をクリックしてファイルを選択すると、ファイル内の項目を含む新しいタブが開きます。

多くのアイテムが存在する可能性があるため、データベースからそれらをロードするプロセスはグリッドによって非同期に行われます (グリッドは、見ているときに満たされます)。

私の質問は次のうちどれが「よりクリーンな」デザインですか? (より良い解決策があれば、とても感謝します)

私が持っている最初の解決策は、 EventAggregator を使用し「ShowQuery」イベントを定義し、リストコントローラーをそれにサブスクライブさせ、他のコントローラーがクエリ結果を表示したいときにそれを公開することです。

もう 1 つのソリューションは Unity コンテナーのようなもので、他のコントローラーから "IListsController" インターフェイスを解決し、"ShowQuery" メソッドを呼び出します。

4

0 に答える 0