Google Guice 用户指南 - Ⅰ:概览
译者:kefate
大家好,我是kefate。今天开始我将会把Google Guice的官方文档陆续翻译一遍,水平有限,若有翻译不妥之处,还望各位不吝指出。OK,话不多说,下面开始今天的正文~
Guice 是一个基于Java的轻量级的 依赖注入(dependency injection) 框架。
使用依赖注入有很多好处,但手动操作往往会导致编写大量的模板代码。为了解决这个问题,Guice 框架应运而生。它可以让你使用依赖注入的同时,避免编写大量的模板代码,这一点在下一节中有进一步的说明。
简单来说,Guice 减轻了对象工厂的需求,同时减少了代码中对 new 的使用。我们可以把 Guice 的 @Inject 想象成新的 new。在某些情况下,你仍然需要编写工厂模式的代码,但你的代码不会直接依赖于它们。代码将更容易修改、单元测试以及在其他情况下复用。
Guice 拥护Java的类型安全特性,尤其是在涉及到Java 5中引入的特性时,如泛型和注解。你可以把 Guice 看作是对核心Java缺失功能的填补。理想情况下,语言本身会提供大部分相同的功能特性,但在这种语言出现之前,我们可以用 Guice。
Guice 可以帮助你设计更好的 API,并且 Guice API 本身也树立了一个好的榜样。 Guice 的设计理念是是宁缺毋滥(Guice is not a kitchen sink),我们用至少三个用例来证明每个功能的合理性。如果对于一个一功能没有把握,我们就不去管它。我们也提供了通用的能力让你能够扩展 Guice,而不是在 Guice 的核心框架中添加功能。
Guice 的目标是使开发和调试更容易、更快速,而不是更难、更慢。本着这一宗旨,Guice 避免使用一些难以理解的“黑科技”(Guice steers clear of surprises and magic)。不管有没有工具,你都应该能够理解代码,尽管工具可以使事情变得更加简单。当错误发生的时候,Guice 会多做一些工作来生成有用的信息。
Google Guice 用户指南 - Ⅰ:概览的更多相关文章
- Protocol Buffers(Protobuf)开发者指南---概览
Protocol Buffers(Protobuf)开发者指南---概览 欢迎来到protocol buffers的开发者指南文档,protocol buffers是一个与编程语言无关‘.系统平台无关 ...
- Android官方技术文档翻译——Gradle 插件用户指南(5)
昨晚把第五章未译完的几句话攻克了.只是第六章没怎么译,明后天又是周末,假设周一前第六章翻译完的话,周一再发第六章. 本文译自Android官方技术文档<Gradle Plugin User Gu ...
- Android官方技术文档翻译——Gradle 插件用户指南(4)
最近赶项目,白天基本没时间,只有晚上在家的时候才能看一看.昨天晚上只翻译完了第四章,今天就只发第四章吧. 本文译自Android官方技术文档<Gradle Plugin User Guide&g ...
- Android官方技术文档翻译——Gradle 插件用户指南(6)
没想到翻译这篇<Gradle 插件用户指南>拖了差不多一个月,还跨年了.不过还好,在2号时终于一口气把剩下的给翻译完了(其实那天剩下的也就不到一章). 今天先发一下第六章,明天再发第七章. ...
- GOOGLE RANKBRAIN 完整指南
[译]GOOGLE RANKBRAIN 完整指南 ( 2018 最新版 ) 2018.01.29 来源 http://www.zhidaow.com/post/google-rankbrain ...
- 《Google Glass开发指南》
<Google Glass开发指南> 基本信息 作者: BestApp工作室 丛书名: 图灵原创 出版社:人民邮电出版社 ISBN:9787115349477 上架时间:2014-3-19 ...
- Google JavaScript样式指南
Google JavaScript样式指南 目录 1简介 1.1术语说明 1.2指南说明 2源文件基础知识 2.1文件名 2.2文件编码:UTF-8 2.3特殊字符 3源文件结构 3.1许可或版权 ...
- Opera Unite 用户指南
Opera Unite 用户指南 1 Opera Unite 简介 Opera Unite is a collaborative technology that allows you to share ...
- 《gradle 用户指南中文版》目录
gradle 用户指南 版权所有©2007-2017 Hans Dockter,Adam Murdoch只要您不对这些副本收取任何费用,并且进一步规定,每个副本都包含本版权声明,无论是以印刷版还是电子 ...
- flume1.9 用户指南(中文版)
概述 Apache Flume是一个分布式,可靠且可用的系统,用于有效地从许多不同的source收集,聚合和移动大量日志数据到集中式数据存储. Apache Flume的使用不仅限于日志数据聚合.由于 ...
随机推荐
- Perl printf 函数
转载 Perl printf 函数
- python列表、元祖
#列表创建1 a=['李刚','李白','王维','苏轼','李商隐','苏洵','王安石','司马光'] #列表创建2 b=list(['李刚','李白','王维','苏轼','李商隐','苏洵', ...
- Go语言核心36讲05
你已经使用过Go语言编写了小命令(或者说微型程序)吗? 当你在编写"Hello, world"的时候,一个源码文件就足够了,虽然这种小玩意儿没什么用,最多能给你一点点莫名的成就感. ...
- Selenium4+Python3系列(七) - Iframe、Select控件、交互式弹出框、执行JS、Cookie操作
前言 突然,想把所有之前未更新的常用Api操作.演示写出来,算是对API的一种完结吧. 下面按照Api模块来做逐一介绍. 一.iframe操作 iframe识别: 语法: driver.switch_ ...
- mysql不需要密码,乱输入密码就能进去。。。。解决
为什么MySQL 不用输入用户名和密码也能访问 今天后天连接数据库时密码写错了,却发现后台能够拿到数据库中的数据,又故意把用户名和密码都写错,结果还是可以.这就意味着任何一个人只要登入服务器,就可以轻 ...
- 6. PyQt5 中的多线程的使用(上)
专栏地址 ʅ(‾◡◝)ʃ 这一节引入了多线程这个非常重要概念, 在我认为多线程的重要性是紧紧次于信号与槽函数的, 因为在平时经常使用 1. 为什么要用多线程 先看下面这一个示例代码 6.1 from ...
- 第一章:seaborn图形美学
一.seaborn模板 1 import numpy as np 2 import matplotlib.pyplot as plt 3 4 def sinplot(flip=1): 5 x = np ...
- python中文件操作相关基础知识
python中文件操作相关基础知识 文件的概念 1,文件的概念? 文件就是操作系统暴露给用户操作硬盘的快捷方式 , 当我们双击一个文件进行打开时,其实就是把硬盘中的数据加载到了内存中,然后展示给我们 ...
- uniapp onLoad里面拿不到reject的参数
在onLoad中直接调用自己用promise封装的请求 reject居然会收不到参数.. onLoad(){ this.$fetch(xxxx) .catch(err=>{ }) // 这里获取 ...
- 云数据库FinOps实战复盘
历时三个多月的HBase成本优化项目按照预期交付了,HBase云数据库月度成本下降了32.5%,超出预期达成目标. 我们对本次HBase成本优化项目进行深度复盘,并进一步尝试总结云数据库的FinOps ...