Java中的UI数据绑定是否比它的价值更麻烦?

2022-09-04 03:53:24

我最近花了一些时间学习并尝试使用各种Java数据绑定工具,如JGoodies,GlazedLists,JSR-295等。我一直试图解决的问题并不难,但是我必须编写的代码量来支持绑定过程,远远超过了它提供的任何简化。

我发现所提供的工具除了琐碎的合成和扩展之外,没有任何其他用途(特别是GlazedLists提供了一套很棒的工具,但是一个系统太复杂了,无法扩展)。

我真的很喜欢数据绑定的想法,但是它似乎存在很大的缺陷。我错过了什么吗?


答案 1

我所有关于桌面模式和数据绑定的演示文稿都包含一个关于开发人员在自动数据绑定方面面临的问题的强烈警告。我建议考虑使用像MVP这样的桌面模式,它非常易于使用,不需要绑定。

绑定的问题是许多隐式操作;这些帮助,但如果发生意外情况,则很难理解,并且只有少数开发人员可以调试和解决第三方绑定链中的问题。

但在过去的三年里,在我工作的项目中,真正遇到问题的程序员越来越少。所以我倾向于说绑定不再是一个大问题了。


答案 2

如果你的应用是微不足道的,那么无论你是进行绑定还是逐个编写侦听器,都无关紧要。

如果您的应用程序已经取得了一些男人几个月的进步,那么事后引入绑定会造成一些痛苦。几乎所有(有用的)技术也是如此。大量的疼痛可能来自你以前认为理所当然的混乱。

如果正确使用绑定,则可能会获得 GUI 和 GUI 行为的完全分离。这反过来意味着

  • 你可以测试你的表示模型(你绑定组件的东西),没有摆动,没有EDT,只需要普通的单元测试。
  • 您可以使用仅涉及极少数Swing组件的简单测试来测试您的绑定

如果你试图在没有绑定框架的情况下达到相同的目标,你最终会编写自己的绑定框架。

恕我直言,在Java世界中绑定存在一个严重的问题。它迫使您使用 PropertyChangeSupport 编写 getters + setter,这很乏味且容易出错。我没有看到在Java中修复它的现实方法,但其他语言(想想Scala)在这里提供了有趣的机会。如果您有兴趣,请参阅我的上一篇博客文章:http://blog.schauderhaft.de/2011/05/01/binding-scala-objects-to-swing-components/


推荐