任何人都可以清楚地说明为什么Google Guice有用吗?

理智:

我已经阅读了有关Google Guice的文章,并了解了其他依赖注入方法的一般问题,但是我还没有看到有人在实践中使用Guice的例子,它的价值显而易见。

我想知道是否有人知道这样的例子?

约书亚·帕托吉(Joshua Partogi):

使用Google Guice简化单元测试只是高级优势。有些人甚至可能不在他们的项目中使用单元测试。人们对Spring / Dependency Injection的使用不仅限于单元测试。

使用Google Guice的低级优势是应用程序的内聚性,项目中的类可以彼此松散地耦合。我可以为另一个类提供一个类,而不必彼此依赖。

考虑以下示例:

public class A{

}

public class B{
  A a = new A();
}

B类将与A类紧密耦合,换句话说,它取决于A类的存在。

但是,使用Guice,我可以像这样使它松散耦合:

public class B{
    private A a;

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

现在,类B松散地耦合到了A,而Guice负责提供A的实例,而不是必须实例化B的实例。有了它,您可以扩展它以提供A到B的接口,并且如果您要对应用程序进行单元测试,则可以将其作为Mock对象。

话虽如此,到目前为止,我们仅讨论依赖注入的好处。除了依赖注入之外,使用Google Guice的好处还包括:

  1. Guice具有非常干净的构造函数Injection实现。从示例中可以看到,您只需添加@Inject注释构造函数。
  2. Guice还使用相同的注解来设置了注入器。
  3. 话虽如此,与其他一些DI实现一样,与基于XML的注入相比,基于注释的注入是非常干净的方法。
  4. 所有的依赖项注入和配置都使用Java,因此默认情况下,您可以确保在应用程序中获得类型安全性。
  5. Guice具有面向方面编程的非常轻量级的实现(或者您可以将其称为AOPAlliance AOP实现的包装)。它的好处是它不会产生存根或任何东西。

这就是它的概述。但是,随着您对Guice的了解越来越深入,它的好处也越来越多。一个简单的现实示例是,如果您将GWT与MVP实现一起使用,则GWT应用程序中的组件/小部件之间的耦合非常松散,并且彼此之间没有紧密集成。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Jython是什么,它完全有用吗?

Java中的捕获转换是什么,任何人都可以举个例子吗?

Google注释库在生产代码中有用吗?

Google Web Toolkit对开发复杂的JavaScript有用吗?

任何人都可以理解connStateInterface吗?

任何人都可以帮助解析HCL吗?

C#-Assert()方法有什么作用?它仍然有用吗?

任何人都可以解释android中的未绑定和绑定服务有什么区别

如果任何人都可以创建和上传任何密钥,那么maven的OpenPGP签名有什么意义?

<< pseudo:before >> </ <pseudo:before >>到底是什么,对我有用吗?

在什么用例中,类比列表有用吗?

任何人都可以详细说明Number的精度并在JavaScript中溢出吗?

任何人都可以解释这种有关数组排序的奇怪行为吗?

关于pytorch张量的奇怪行为。任何人都可以解释清楚吗?

在任何情况下,删除ctor的类都可能有用吗?

没有任何前端框架,Laravel Mix.extract仍然有用吗?

任何人都可以说出这段代码出了什么问题吗(python :()的新手

任何人(包括Google)都可以在保存我的网站的服务器上获取文件列表吗?

将引用类型声明为const有用吗?

任何人都可以更正此代码吗?

任何人都可以处理吗?

任何人都可以建议使用什么来使UI屏幕成为提及对象吗?

什么是 P2P 和网状网络?任何人都可以帮助我吗?

WebRTC:声音没有静音 - 任何人都可以看到错误吗?

任何人都可以用 Jsoup 刮一个元素吗?

什么是内联查询?任何人都可以用简洁明了的例子来定义吗?

任何人都可以回答这个问题吗?

任何人都可以解释为什么 mysql 没有按预期使用索引

任何人都可以在 Google 表格中查看有关 ArrayFormula 的这个公式吗?