7

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

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

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

我知道 MVC 是一个广泛的概念,并且已经摆弄了观察者模式(如果我理解正确的话,它的 Java 实现有一些缺点),但我想知道这个问题是否有公认的最佳实践?

4

3 回答 3

2

绝对是 MVC——就像这个例子一样,它清楚地把事情分开了。Swing 示例的问题在于,它们似乎显示 MVC 都在 Swing 内容中工作,这对我来说似乎不正确

于 2008-09-16T07:10:18.113 回答
1

MVCpages对于单个小部件来说非常棒,但是当你拥有forms大量小部件时它会变得有点不守规矩。

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

于 2008-09-16T15:16:10.037 回答
0

我过去曾使用过观察者模式(使用 AspectJ 魔法)并取得了一些成功,但发现除非你小心,否则它很快就会变成一个集群......呃......轻弹?

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

编辑:

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

实际的业务逻辑是通过使用 AspectJ '观察'模型对象并在它们发生变化时触发所需的事件来完成的。因此,如果您更改了文本框中的值,AspectJ 会触发并将该值复制到 POJO 中。如果 POJO 中的该字段上有一个用于业务逻辑的事件,则该事件将触发。如果该逻辑修改了任何 POJO(它可以),AspectJ 会注意到并将 POJO 中的值复制到 UI 组件中。

于 2008-09-16T07:00:19.183 回答