[英]Best way for a Swing GUI to communicate with domain logic?
我在一些POJO中实现了一些域逻辑。 我想编写一个Swing用户界面,以允许用户启动并查看各种域操作的结果。
UI和域之间通信的最佳模式/框架/库是什么? 这归结为:
我知道MVC是一个广泛的概念,并且已经摆弄了Observer模式(如果我理解正确,它的Java实现有一些缺点),但我想知道这个问题是否有一个公认的最佳实践?
肯定是MVC - 类似于这个例子 ,它可以清楚地分解出来。 Swing示例的问题在于它们似乎显示MVC都在摇摆的东西中工作,这对我来说似乎不对
MVC对于单个窗口小部件来说非常棒,但是当您拥有包含大量窗口小部件的pages
和forms
时,它会变得有点不守规矩。
可能值得研究的一件事(我不支持它,我实际上没有使用它,只为我自己实现了非常类似的东西)是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.