この種のダイアログの場合。FindFilesCommand のネストされたクラスとして定義します。多くのコマンド間で使用される基本的なダイアログの場合、それらのコマンドにアクセス可能なモジュールでそれを定義し、それに応じてコマンドにダイアログを構成させます。
コマンド オブジェクトは、ダイアログが残りのソフトウェアとどのように対話しているかを示すのに十分です。私自身のソフトウェアでは、Command オブジェクトは独自のライブラリに存在するため、ダイアログはシステムの残りの部分から隠されています。
私の意見では、手の込んだことをするのはやり過ぎです。さらに、多くの追加のインターフェイスと登録メソッドを作成することを含む、最高レベルに維持しようとすることがよくあります。少しの利益のための多くのコーディングです。
他のフレームワークと同様に、奴隷的な献身はあなたをいくつかの奇妙な路地に導きます。コードの悪臭を感じた場合は、他に使用できる手法がないか判断する必要があります。繰り返しになりますが、ダイアログは、それらを使用するコマンドの横にしっかりとバインドして定義する必要があります。そうすれば、5 年後にコードのそのセクションに戻って、そのコマンドが扱っているすべてのことを確認できます。
繰り返しますが、ダイアログが複数のコマンドに役立ついくつかの例では、それらすべてに共通のモジュールでダイアログを定義します。ただし、私のソフトウェアでは、おそらく 20 個のダイアログのうち 1 個がこのようなものです。主な例外は、ファイルを開く/保存するダイアログです。ダイアログが数十のコマンドで使用される場合、インターフェイスを定義し、そのインターフェイスを実装するフォームを作成し、そのフォームを登録するという完全なルートに進みます。
国際的な使用のためのローカリゼーションがアプリケーションにとって重要である場合は、すべてのフォームが 1 つのモジュールに含まれていないため、このスキームでそれを考慮する必要があります。