1

我正在尝试使用以 MS SQL Server 作为后端的 Swing 和 MVC 设计模式来实现一个小型应用程序。该应用程序从一个简单的登录表单开始。应用程序的用户也有两种角色。

  1. 管理员:可以创建、删除、修改、查看所有用户以及应用程序提供的所有功能。
  2. 应用程序用户:只能使用应用程序提供的功能。

我正在考虑为每个角色设置两个单独的框架,即 UI。

主登录表单/GUI 充当视图,具有使用观察者模式注册视图的登录控制器类。按钮注册事件,控制器侦听,调用适当的 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 初始化我的应用程序的不同部分。为了使事情脱钩,我希望登录的东西除了登录用户之外不处理其他功能。拥有一个初始化应用程序登录部分的应用程序控制器可能是一个好主意,当它对用户进行身份验证时,将该消息传递回它,这将决定接下来需要初始化哪个 GUI。

  2. 如第 1 部分所述,登录控制器应该只将消息传递回整体应用程序控制器,后者将决定下一步需要初始化应用程序的哪一部分。

  3. 处理所有这些操作似乎超出了登录表单的范围。登录表单应该只与应用程序控制器通信登录是否成功以及有关用户的一些基本信息,以便在初始化的下一部分中根据需要从数据库中收集其他信息。

  4. 来自 JDialog Oracle 文档“对话框窗口是一个独立的子窗口,旨在在主 Swing 应用程序窗口之外携带临时通知”这就是说您不想将对话框用于您的主应用程序。但是,如果您愿意,您可以为登录表单使用对话框,这是可以接受的。

我希望这有帮助。

于 2013-08-30T16:19:26.587 回答