14

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

我发现所提供的工具仅适用于琐碎的组合和扩展(特别是 GlazedLists 提供了一组很棒的工具,但系统过于复杂而无法扩展)。

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

4

2 回答 2

6

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

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

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

于 2012-06-01T08:34:33.527 回答
4

如果您的应用程序是微不足道的,那么您是否进行绑定或逐个编写侦听器并不重要。

如果您的应用程序在几个月内取得了进展,那么事后引入绑定会带来一些痛苦。几乎所有(有用的)技术都是如此。大量的痛苦可能来自你以前认为理所当然的混乱。

如果您正确使用绑定,您可能会完全分离 gui 和 gui 行为。这反过来意味着

  • 您可以测试您的演示模型(您将组件绑定到的东西),无需摇摆,无需 EDT,只需使用简单的单元测试。
  • 您可以使用仅涉及很少 Swing 组件的简单测试来测试您的绑定

如果您尝试在没有绑定框架的情况下达到相同的效果,您最终将编写自己的绑定框架。

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

于 2011-05-05T14:38:54.833 回答