繁体   English   中英

使用GUICE使用外部服务的Design Service Manager类

[英]Design Service Manager Class which uses external services using GUICE

在我的应用程序中,我有一个服务管理器来处理我的所有请求。 现在,此服务管理器使用外部服务来满足某些特定类型的请求。

例如,请考虑以下示例代码:

 Class ServiceManager{

    private final A a;
    private final B b;

    private ExternalService externalService; 


      @Inject
      public ServiceManager(A a, B b)
      {
                this.a =a;
                this.b =b;
      }

      public void processIncomingRequestUsingExternalService(){...}


      }

现在,为了初始化ExternalService,使用GUICE哪种方法更好

  • 使用setter注入,因为将来可能会出现“ n”个此服务管理器可能要使用的不同类型的外部服务。
  • 或使用构造函数注入,就像我用于类A和​​B对象一样,它们是应用程序的内部类。

注意:这里的ExternalService是外部服务的助手。

与setter注入相比,构造函数注入具有以下优点:

  • 明确声明对正在阅读代码的人的依赖关系。
  • 单元测试变得更加干净。
  • 依赖关系可以标记为“最终”,从而增加了不变性。

一个很好的文档,详细讨论了这些差异: https : //www.petrikainulainen.net/software-development/design/why-i-changed-my-mind-about-field-injection/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM