【问题标题】:MVC, Swing, Observer Pattern Design DecisionMVC、Swing、观察者模式设计决策
【发布时间】:2013-08-03 16:06:43
【问题描述】:

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

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

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

主登录表单/GUI 充当视图,具有使用观察者模式注册视图的登录控制器类。该按钮注册事件,控制器侦听,调用适当的 DAO 以连接到数据库并验证用户是否可以登录到应用程序。 login的存储过程返回access_role,即管理员、应用程序用户、未知用户或未经身份验证的用户,通过DAO返回给Login Controller。

我希望保持尽可能低的耦合,从而将关注点分离和使用观察者模式进行 MVC 设计。

现在我的问题是,

  1. 登录控制器应该根据返回的 access_role 来决定显示应用程序用户 UI 还是管理员 UI,还是应该将该信息传递回应该初始化相应 GUI 的登录 UI?
  2. 如果登录控制器应该决定启动哪个 UI,那么它还需要为相应的 GUI 设置所有侦听器吗?这是一个好的设计决策还是有更好的方法?
  3. 如果登录控制器将 access_control 传递回登录表单,那么登录表单必须为新 GUI 初始化所有侦听器并实例化新 GUI?这比控制器做的更好吗?
  4. 管理员和应用程序用户的 UI 应该是 JFrame 还是对话框?

希望听到您对此的看法。

最好的问候, 卡希夫汗

【问题讨论】:

    标签: swing model-view-controller architecture observer-pattern


    【解决方案1】:
    1. 我不确定我是否希望登录控制器或登录 UI 初始化我的应用程序的不同部分。为了使事情脱钩,我希望登录的东西除了登录用户之外不处理其他功能。拥有一个初始化应用程序登录部分的应用程序控制器可能是一个好主意,当它对用户进行身份验证时,将该消息传递回它,这将决定接下来需要初始化哪个 GUI。

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

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

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

    我希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 2012-09-02
      • 2010-12-24
      • 1970-01-01
      • 2012-12-29
      • 2012-07-08
      • 2011-11-25
      • 2011-09-25
      • 2010-09-23
      • 2010-12-31
      相关资源
      最近更新 更多