【问题标题】:Is UI data binding in Java more trouble than it is worth?Java 中的 UI 数据绑定是否更麻烦?
【发布时间】:2011-08-19 02:57:56
【问题描述】:

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

我发现所提供的工具仅适用于微不足道的组合和扩展(GlazedLists 尤其提供了一组很棒的工具,但系统过于复杂而无法扩展)。

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

【问题讨论】:

  • 当然是一个有趣的话题,但不是一个真正可以回答的问题,IMO :-) 使用并喜欢 JGoodies(它的状态如何,最近有什么进化?)和 jsr-295(一直很有希望,但被放弃了多年来),两者都很好地降低了绑定 ui 元素的感知复杂性。不会将 GlazedLists 分组到该联盟中,这实际上与绑定无关。看到您的评估“我必须为 xx 绑定支持编写的数量远远超过任何简化”,然后我的第一反应是:那么您的上下文太琐碎,无法从 any 绑定框架中获利;-) 我的美分,只有
  • kleopatra:在这些规范和方法的背景下,Java 社区一直存在巨大的脱节。 J2EE 也浮现在脑海中。 timpatt:这些规范是关于面向组件的开发,需要工具支持。您认为 VisualStudio 的工作原理如何?
  • @alphazero 他只提到了 1 个规范。它不需要工具支持(尽管有一些可能会很好)。它的主要问题是:它已经死了。 JGoodies 做得很好(但不是规范)
  • @jens:“我真的很喜欢数据绑定的想法,但它似乎存在严重缺陷。我错过了什么吗?”我在这里和我的回答中解决了他的问题:为什么要进行数据绑定?

标签: java data-binding jgoodies glazedlists


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

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

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

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

    • 你可以测试你presentation model(你绑定你的组件的东西)没有摇摆,没有EDT,只需简单的单元测试。
    • 您可以通过只涉及很少的 Swing 组件的简单测试来测试您的绑定

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

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

    【讨论】:

    • 您在上面提到了我未能提出的一点;那就是表示模型的想法(以及它特别允许单元测试 ui 逻辑的好方法)是我首先开始研究绑定框架的原因。我认为你是对的:问题也是 Java。我正在考虑将绑定代码移动到更具表现力的语言(groovy?)...
    • 看看code.google.com/p/client-objects 它会在运行时为您提供 PropertyChangeSupport
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-05-24
    • 2015-07-15
    • 2014-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多