代码之家  ›  专栏  ›  技术社区  ›  Andrew Swan

Swing GUI与域逻辑通信的最佳方式?

  •  7
  • Andrew Swan  · 技术社区  · 17 年前

    我在许多POJO中实现了一些域逻辑。我想编写一个Swing用户界面,允许用户启动并查看各种域操作的结果。

    在UI和域之间进行通信的最佳模式/框架/库是什么?这可以归结为:

    • 用户界面能够将用户手势转换为域操作
    • 域能够将状态/结果信息发送回UI以进行显示。

    我意识到MVC是一个宽泛的概念,并且在观察者模式(它的Java实现有一些缺点,如果我理解正确)的情况下被篡改了,但我想知道是否有一个公认的最佳实践来解决这个问题?

    3 回复  |  直到 7 年前
        1
  •  2
  •   Chris Kimpton    17 年前

    肯定是MVC-像这样的 example 它清楚地把事情分开。摆动示例的问题在于,它们似乎显示了MVC在摆动工具中的所有工作,这对我来说似乎不正确。

        2
  •  1
  •   Jack91255    7 年前

    MVC 对于一个单独的小部件来说是非常棒的,但是当你 pages forms 有很多小部件。

    有一件事可能值得研究(我没有认可它,我实际上没有使用它,只是为自己实现了一些非常相似的东西),那就是 Beans Binding Framework (JSR295 )

        3
  •  0
  •   SCdF    17 年前

    我在过去使用了观察者模式(使用Aspectj Magic) 一些 成功,但发现除非你小心,否则它很快就变成了一个集群。嗯…轻弹?

    它很快变得难以管理,最重要的是非常难调试。

    编辑:

    为了稍微扩展我的答案,我们使用 SWT 不是摇摆,所以YMMV。我们基本上使用AspectJ连接从UI组件到模型对象的数据传输。这些模型对象是哑pojos。

    实际的业务逻辑是通过使用AspectJ“监视”模型对象并在更改时触发所需的事件来完成的。因此,如果您在文本框AspectJ中更改了一个值,则会激发该值并将其复制到pojo中。如果POJO中的该字段上有一个用于业务逻辑的事件,那么 然后 火。如果该逻辑修改了任何POJO(并且它可以)AspectJ,那么它会注意到并将该值从POJO复制到UI组件中。