1

MS SQL Server をバックエンドとして Swing と MVC デザイン パターンを使用して小さなアプリケーションを実装しようとしています。アプリケーションは、単純なログイン フォームから始まります。また、アプリケーションのユーザーには 2 種類のロールがあります。

  1. 管理者: すべてのユーザーとアプリケーションが提供するすべての機能を作成、削除、変更、表示できます。
  2. アプリケーション ユーザー: アプリケーションが提供する機能のみを使用できます。

役割ごとに 2 つの個別のフレーム、つまり UI を持つことを考えています。

メインのログイン フォーム/GUI はビューとして機能し、Observer パターンを使用してビューを登録するログイン コントローラー クラスを備えています。このボタンはイベントを登録し、コントローラがリッスンし、適切な DAO を呼び出してデータベースに接続し、ユーザーがアプリケーションにログオンできるかどうかを確認します。ログインのストアド プロシージャは access_role を返します。つまり、管理者、アプリケーション ユーザー、不明なユーザー、または認証されていないユーザーのいずれかであり、DAO を介してログイン コントローラーに返されます。

カップリングをできるだけ低く保ちたいので、オブザーバーパターンを使用して懸念事項と MVC 設計を分離します。

今、私の質問は、

  1. ログイン コントローラーは、返された access_role に基づいて、アプリケーション ユーザー UI または管理者 UI のいずれかを表示するかどうかを決定する必要がありますか?それとも、それぞれの GUI を初期化する必要があるログイン UI にその情報を渡す必要がありますか?
  2. ログイン コントローラーが開始する UI を決定する必要がある場合、それぞれの GUI に対してすべてのリスナーも設定する必要がありますか? それは良い設計上の決定ですか、それともこれを行うためのより良い方法はありますか?
  3. ログイン コントローラが access_control をログイン フォームに戻す場合、そのログイン フォームは新しい GUI のすべてのリスナーを初期化し、新しい GUI もインスタンス化する必要がありますか? これは、コントローラーが処理するよりも優れていますか?
  4. 管理者とアプリケーション ユーザーの UI は JFrame にするか、Dialogs にするか?

それについてのご意見をお待ちしております。

敬具、 カシフ・カーン

4

1 に答える 1

0
  1. ログイン コントローラまたはログイン UI でアプリケーションの別の部分を初期化する必要があるかどうかはわかりません。物事を分離しておくために、Login スタッフはユーザーのログイン以外の機能を処理しないようにしたいと思います。アプリケーションのログイン部分を初期化する Application Controller のように、ユーザーを認証するときにそのメッセージを返すことで、次にどの GUI を初期化する必要があるかを判断するのは良い考えかもしれません。

  2. パート 1 で述べたように、ログイン コントローラは、アプリケーションのどの部分を次に初期化する必要があるかを決定するアプリケーション コントローラ全体にメッセージを返すだけです。

  3. これらすべてのアクションを処理することは、ログイン フォームの範囲外のように思われます。ログイン フォームは、ログインが成功したかどうかと、ユーザーに関するいくつかの基本情報をアプリケーション コントローラに通信するだけでよいため、初期化の次の部分で必要に応じてデータベースから追​​加情報を収集できます。

  4. JDialogのOracleドキュメントから 「ダイアログウィンドウは、メインのSwingアプリケーションウィンドウとは別に一時的な通知を行うことを目的とした独立したサブウィンドウです」これは、メインアプリケーションにダイアログを使用したくないと言われています。ただし、必要に応じてログイン フォームにダイアログを使用することもできますが、それは許容されます。

これが役立つことを願っています。

于 2013-08-30T16:19:26.587 に答える