1

我想實現一個小型應用程序,使用MS SQL Server作爲後端的Swing和MVC設計模式。 該應用程序以簡單的登錄表單開始。此外,應用程序的用戶還有兩種角色。MVC,Swing,觀察者模式設計決策

  1. 管理員:可以創建,刪除,修改,查看所有用戶以及應用程序提供的所有功能。
  2. 應用程序用戶:只能使用應用程序提供的功能。

我正在考慮爲每個角色分配兩個獨立的幀,即UI。

主登錄表單/ GUI作爲一個視圖,具有使用Observer模式註冊視圖的Login控制器類。按鈕註冊控制器偵聽的事件,調用適當的DAO連接到數據庫並驗證用戶是否可以登錄到應用程序。 用於登錄的存儲過程返回access_role,即管理員,應用程序用戶,未知用戶或通過DAO返回到登錄控制器的未經身份驗證的用戶。

我想保持耦合儘可能低,因此用Observer Pattern分離關注點和MVC設計。

現在我的問題是,

  1. 應登錄控制器根據跟蹤access_role返回或者顯示應用程序的用戶界面或管理員界面還是應該把它傳遞這些信息反饋到登錄界面應該初始化各自的GUI?
  2. 如果登錄控制器應該決定啓動哪個UI,那麼還需要爲各個GUI設置所有監聽器?這是一個好的設計決定,還是有更好的方法呢?
  3. 如果登錄控制器將access_control傳遞迴登錄表單,那麼登錄表單將不得不初始化新GUI的所有偵聽器,並實例化新的GUI?這比控制器做的更好嗎?
  4. 管理員和應用程序用戶的UI應該是JFrame還是對話框?

希望聽到您對此的看法。

最好的問候, 卡希夫汗

回答

0
  1. 我不知道如果我想登錄控制器或登錄UI初始化我的應用程序的不同部分。爲了保持事物解耦,我希望登錄內容不會處理其他功能,而只能登錄用戶。像應用程序控制器那樣初始化應用程序的登錄部分,以及何時驗證用戶將消息傳回給應用程序控制器,這將決定下一個需要初始化的GUI,這可能是一個好主意。

  2. 如第1部分所述,登錄控制器應該只是傳回一個消息給總體應用控制器,該應用控制器將決定接下來應用程序的哪一部分需要被初始化。

  3. 這似乎超出了登錄表單的範圍來處理所有這些操作。登錄表單應僅僅嚮應用程序控制器傳達登錄是否成功以及有關用戶的一些基本信息,以便在下一部分初始化過程中根據需要從數據庫收集附加信息。

  4. 來自JDialog Oracle文檔「對話框窗口是一個獨立的子窗口,除了主要的Swing應用程序窗口之外,還提供臨時通知」。據說你不想爲主應用​​程序使用對話框。如果您選擇並且可以接受,您可以使用登錄表單的對話框。

我希望這有助於。