我在一些POJO中实现了一些域逻辑。我想编写一个Swing用户界面,以允许用户启动并查看各种域操作的结果。
UI和域之间通信的最佳模式/框架/库是什么?这归结为:
我知道MVC是一个广泛的概念,并且已经摆弄了Observer模式(如果我理解正确,它的Java实现有一些缺点),但我想知道这个问题是否有一个公认的最佳实践?
答案 0 :(得分:2)
绝对是MVC - 像example这样的东西可以清楚地分解出来。 Swing示例的问题在于它们似乎显示MVC都在摇摆的东西中工作,这对我来说似乎不对
答案 1 :(得分:1)
MVC 对于单个窗口小部件来说非常棒,但是当pages
和forms
包含大量小部件时,它会变得有点不守规矩。
可能值得关注的一件事(我不赞同它,我实际上没有使用它,只为我自己实现了非常相似的东西)是Beans Binding Framework (JSR295)
答案 2 :(得分:0)
我过去曾使用Observer模式(使用AspectJ魔术)某些成功,但发现除非你小心它很快就变成了一个集群..呃......轻弹?
很快就变得很难管理,最重要的是很难调试。
修改强>
为了略微扩展我的回答,我们使用的是SWT,而不是Swing,所以YMMV。我们基本上使用AspectJ来连接从UI组件到模型对象的数据传输。这些模型对象是愚蠢的POJO。
实际业务逻辑是通过使用AspectJ“观察”模型对象并在更改时触发所需事件来完成的。因此,如果您更改了文本框中的值,AspectJ将触发并将该值复制到POJO中。如果POJO中的该字段在其上有一个事件,那么然后就会触发业务逻辑。如果该逻辑修改了任何POJO(并且它可以),AspectJ会注意到并将POJO中的值复制到UI组件中。