【问题标题】:Best practices for Eclipse 4 DIEclipse 4 DI 的最佳实践
【发布时间】:2013-08-09 01:34:52
【问题描述】:

我想知道 Eclipse 4 依赖注入的最佳实践是什么。 在互联网上阅读了这个主题后,我想出了以下策略。

要求

共享应用程序的数据模型(例如公司、员工、客户……),以便框架对象(视图部件、处理程序、侦听器……)能够以尽可能少的耦合访问它。

建议的策略

  • 我使用 lifeCycleURI 插件属性注册了一个在应用程序启动时触发的处理程序。这样的处理程序创建一个“空的”顶级数据模型容器对象并将其放入 EclipseContext。当应用程序停止时,它也会被丢弃。

  • 所有 Eclipse 框架类(视图部件、处理程序)都使用经典的 DI 来获取此类数据模型对象注入。

  • 使用类构造函数创建的按钮侦听器不能将数据模型对象注入其中。所以我认为可以使用 ContextInjectionFactory.make() 创建它们以执行注入。这会将创建侦听器的类与 CIF 结合起来,但最大的优势是注入可以开箱即用。

这是我发现的利用 E4 DI 并尽可能减少耦合的最佳解决方案。在我看来,弱点是与 CIF 的耦合。我的问题是是否存在任何策略来消除这种耦合,或者针对相同需求的替代解决方案。

【问题讨论】:

    标签: eclipse dependency-injection rcp e4


    【解决方案1】:

    你可以在你的项目中创建一个服务类,比如说ModelService

    为该类添加@creatable 和@singleton 注释:

    @creatable
    @singleton
    class ModelService{
    
    }
    

    并让 DI 在您的部件/处理程序/等中使用以下语法完成其工作 ..

    @Inject ModelService modelService;
    

    然后您可以在您的服务中实现方法,例如“createBaseModel()”、updateModel() 等。

    这创建了一个低耦合解决方案:您还可以在单​​独的插件中实现 ModelService 并将其定义为 OSGi 服务。 对于该解决方案,您可以阅读this Lars Vogel article

    【讨论】:

      猜你喜欢
      • 2010-12-03
      • 2015-08-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-17
      • 2014-03-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多