アプリケーションのさまざまな部分間の相互作用の設計に関するアドバイスが必要


10

NetBeansプラットフォーム7に基づくリッチデスクトップアプリケーションの「メイン」クラスを設計しようとしています。このアプリケーションはHTTPサービスを消費し、TCP上の「プッシュシステム」を通じてメッセージを受信します。

  • 私たちは3人の開発者であり、モジュールを並行して開発したいと考えています
  • アプリケーションは階層化されます(データ、ビジネス、プレゼンテーション)
  • 責任を分離するために、プレゼンテーションモデルを使用します
  • いくつかの詳細なデータ(Bean Personなど)は複数の画面で共有されます(同時に複数の画面に表示される可能性があります)
  • ...

個別の画面を開発することはできますが、アプリケーション全体を整理し、各モジュールのコンテンツを定義する方法を正確には知りません。

  1. それでは、アプリケーション全体の相互作用を調整/管理するためのアドバイス(パターン/ベストプラクティス/本/サンプルアプリ)はありますか?
  2. モジュールのコンテンツを定義する方法について何かアドバイスはありますか?

ありがとう!


私が構築したいものを説明する小さな例:Fooユーザー管理アプリケーション

  1. アプリケーションを起動します
  2. 左側の[エクスプローラ]にプラットフォームのリストがあります(リストはローカルファイルに保存されます)
  3. 上部には、新しいプラットフォームを追加するためのボタンがあります(右クリックでも利用可能)
  4. プラットフォームをダブルクリックすると、アプリはHTTPサービスを呼び出し、ユーザーの完全なリストを取得します。このリストは[エディタ]に表示されます(JTable内)
  5. バックグラウンドプロセスが開始されます:TCP接続を介してメッセージを受信します
  6. ツールバーのボタンのおかげで新しいユーザーを追加することが可能です

アプリケーションが別のPCで起動され、ユーザーが同じプラットフォームに接続している場合、そのユーザーリストは動的に更新されます(追加/削除/ステータス:{オフライン/オンライン})(メッセージのおかげで)

将来的にはチャットモジュールが提供される予定です。

私の質問は(言い換えれば):各モジュールのコンテンツを決定するためのアドバイス/ベストプラクティスですか?PM(プレゼンテーションモデル)がビュー/ビジネスとデータを分離して画面を作成する良い方法である場合、PMに基づいて複数の画面をリンクする最良の方法は何ですか?チャットモジュールを開発し、ユーザーリストを右クリックして表示されるコンテキストメニューに「ディスカッション...」というエントリを追加する方法を想像してみてください。


3
何を求めているのか明確ではありません。あなたの質問を説明するために小さな例を提供するのはどうですか?
Robert Harvey、

Geertjan Wielengaの素晴らしいポスト。Tom Wheelerの声明(NetBeans Dream Teamメンバー)の声明が含まれています:java.dzone.com/news/how-to-split-into-modules
Destroyica

回答:


5

要件を考えると、コア処理を開始するには、コマンドパターンで構成する必要があり、後でリクエストプロセッサにテンプレートパターンを使用できます。などなど。マスターパターンと呼ばれるものはありません。もしあったとしても、彼らはもう私たちを必要としません。

アイデアは、要件に合わせて進化できるようにする設計を持つことです。

私は基本モジュールのインターフェースを作成することから始め、そのインターフェースをすべての人とその周りのユーティリティに提供します。全員がbase-moduleに基づいて独自のモジュールを実装できるようにします。


3

私は考える(RESTfulな私は仮定)サービスに裏打ちされたあなたはかなり古典的なMVCパターンを見ています。重要なのは、サービスをUIから分離することです。これは、代替UIを導入しているためではなく、サービスインターフェイスを明確にするためです。

したがって、getPeopleサービスについて考えるときは、セカンダリ(Swing以外)のUIがサービスとどのように相互作用するかを必ず考えてください。それを心に留めておけば、かなり柔軟で分離されたソリューションを思い付くでしょう。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.