繁体   English   中英

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

[英]Best way for a Swing GUI to communicate with domain logic?

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

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

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

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

肯定是MVC - 类似于这个例子 ,它可以清楚地分解出来。 Swing示例的问题在于它们似乎显示MVC都在摇摆的东西中工作,这对我来说似乎不对

MVC对于单个窗口小部件来说非常棒,但是当您拥有包含大量窗口小部件的pagesforms时,它会变得有点不守规矩。

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

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

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

编辑:

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

实际业务逻辑是通过使用AspectJ“观察”模型对象并在更改时触发所需事件来完成的。 因此,如果您更改了文本框中的值,AspectJ将触发并将该值复制到POJO中。 如果POJO这一领域有一个事件在它的业务逻辑,那么这将触发。 如果该逻辑修改了任何POJO(并且它可以),AspectJ会注意到并将POJO中的值复制到UI组件中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM