3

Controller が別の Controller メソッドを簡単かつ正しい方法で呼び出す方法を説明してもらえますか?

いくつかのコードを提供してください!

背景: 2 つの異なる Controllers-View-Model と 2 つのライブラリがあり、相互に通信する必要があります。

  1. SettingsWindow/SettingsController/SettingsModel: アプリの設定を担当します。アプリ全体で設定データが必要なため、モデルはシングルトンです。

  2. 特定のディレクトリにファイルが作成されるたびにイベントを作成する、ディレクトリを監視するためのライブラリ。監視対象のディレクトリ パスは、SettingsModel で定義されます。そのために Java 7 WatchService API を使用しています。

  3. Web サーバーを監視し、新しいファイルをダウンロードするためのライブラリ。Web サーバーのアドレスと保存ディレクトリは両方とも SettingsModel で定義されています。私は HttpsUrlConnection とそのタイマーを使用しています。

  4. MainWindow/MainController/MainModel: メイン アプリ ウィンドウを担当します。このウィンドウには、監視対象のディレクトリに新しいファイルが作成されるたびに、また上記のライブラリによってファイルがダウンロードされるたびに更新する必要があるテーブルがあります。

では、これら 4 つの異なる機能を正しくインスタンス化して通信するにはどうすればよいでしょうか。
それらはすべて関連しているため、それらのコントローラーはどのように通信しますか? MVC に関してこのプロジェクトをどのように編成すればよいですか?

基本的な MVC スキャフォールド (スケルトン) を提供し、インスタンスを作成する場所、お互いのメソッドを呼び出す場所と方法を示してください。私はJava、特にswingとmvcが初めてです。私はたくさん読んだことがありますが、この状況で立ち往生しました。

4

1 に答える 1

4

hereで提案されているように、 model-view-controllerobserverなどのパターンは、繰り返し発生する設計要素を表します。簡単なアウトラインでクラスの相互作用を説明できますが、一般的な解決策は StackOverflow の範囲を超えています。

それでも、原則がどのように適用されるかを検討することは有益かもしれません。ここに示すように、チュートリアルに従ってaWatchServiceを aに実装したとします。ここで、 の到着に応じてメイン ビュー aを更新する必要があるとします。ここここに示されているように、対応するが自分自身をワーカーに登録するように手配します。が到着したら、 を更新し、適切なイベントを起動して を更新します。既知の実装には、必要なメソッドが既に含まれています。SwingWorkerJTableWatchEventTableModelPropertyChangeListenerPropertyChangeEventTableModelJTableTableModel

同様のアプローチを使用して、Web から到着するデータに応じてテーブルを更新します。

設定についてはjava.util.Preferencesここで説明されている、またはここjavax.jnlp.BasicServiceで説明されている を検討してください。

于 2012-06-09T00:57:44.303 に答える