对GUI组件的依赖注入

对于某些人来说,这是不言而喻的,但是最近的一次通讯使我想知道其中隐含危险

在我的《 学习Vaadin》一书中,我展示了如何将Vaadin Web框架与Spring DI框架集成:为了阐明我的观点,我将Vaadin UI组件连接在一起。 我这样做是因为我不想进入创建服务层的复杂过程。 我有一些评论质疑注入UI组件是否相关。 这个问题同样适用于Vaadin和Swing。 恕我直言,我认为不是,如果有第二版的Learning Vaadin,我将以粗体显示警告或选择一个更复杂的示例。

为什么这样? 到目前为止,这是我的推理。 使用DI有一些原因。 仅举几例:

  • 如果我想引起争议,我会说有人使用它是因为它大肆宣传(或者因为他们一直这样做)...但是认识我的人也知道我不是这种人。
  • 一些开发人员(或Heaven禁止,建筑师)使用DI,因为它破坏了依赖关系
  • 对于我自己,我使用DI的主要原因是使我的课程更具可测试性。

现在,UI组件可能必须与其他3种组件进行协作:其他UI组件,GUI行为和服务。 因为我认为Vaadin框架,以一流的质量,我不会单元测试可用的组件,只有行为我已经编码(关于如何UI组件及其行为分离的详细信息在这里和服务)。 因此,将UI组件连接在一起对我没有任何实际价值。

注入行为和服务是另一回事:由于它们可能需要进行单元测试并且本身具有依赖性(在服务层或数据访问层上),因此我需要由DI上下文提供它们,以便自己注射。 此时,基本上有两种解决方案:

  • 只连接服务和行为。 这将导致对UI组件中DI框架的依赖。
  • 或在根部连接所有组件,并让框架处理注入。 在某些情况下,这可能是过大的。 这是我在编写“学习Vaadin”示例时所做的选择。

我希望这篇文章能为您的亲爱的读者阐明整个注入UI组件的内容。

翻译自: https://blog.frankel.ch/dependency-injection-on-gui-components/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值