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的使用不仅限于日志数据聚合.由于 ...
随机推荐
- Kubeadm搭建kubernetes集群
Kubeadm搭建kubernetes集群 环境说明 | 角色 | ip | 操作系统 |组件 | | – | – | – | | master | 192.168.203.100 |centos8 ...
- 刚哥谈架构(八)- 为你的应用选择合适的API
前言: 架构师的主要活动是做出正确的技术决策.选择合适的API是一项重要的技术决策.那么今天就看看API的选择问题. 应用程序编程接口(API)是一种计算接口,它定义了多个软件中介之间的交互.它定义了 ...
- 前端项目通过‘URL 重写’部署在 IIS 中,访问 WebAPI 接口
〇.前言 在前端项目开发时,我们可以通过配置代理 proxy 来访问本地或者是远程接口,但是部署后代理就失效了.如果项目部署在 IIS 上,就没法去对应到指定接口,此时就需要 IIS 中的'URL重写 ...
- table 动态隐藏tr行
table: <table style="width:100%" class="table01" cellspacing="1" ce ...
- .NET 6使用ImageSharp给图片添加水印
.NET 6 中,使用System.Drawing操作图片,生成解决方案或打包的时候,会有警告,意思是System.Drawing仅在 'windows' 上受支持.微软官方的解释是: Syste ...
- [信息抽取]基于ERNIE3.0的多对多信息抽取算法:属性关系抽取
[信息抽取]基于ERNIE3.0的多对多信息抽取算法:属性关系抽取 实体关系,实体属性抽取是信息抽取的关键任务:实体关系抽取是指从一段文本中抽取关系三元组,实体属性抽取是指从一段文本中抽取属性三元组: ...
- ARC145~152 题解
比赛标号从大到小排列 . 因为博主比较菜所以没有题解的题都是博主不会做的 /youl ARC144 以前的比赛懒得写了 . 目录 AtCoder Regular Contest 152 B. Pass ...
- Jenkins基本配置
1.Configure System (系统设置) 在系统设置这里,只需要设置最后面的一项,配置远程服务器地址,即代码最终运行的服务器地址信息,当然这里是可以配置多台远程Linux服务器的,配置完成后 ...
- 基于.NetCore开发博客项目 StarBlog - (25) 图片接口与文件上传
前言 上传文件的接口设计有两种风格,一种是整个项目只设置一个接口用来上传,然后其他需要用到文件的地方,都只存一个引用ID:另一种是每个需要文件的地方单独管理各自的文件.这俩各有优劣吧,本项目中选择的是 ...
- RedisTemplate设置redis的key时出现\xac\xed\x00\x05t\x00\x0f前缀
1.问题描述 使用redisTemplate设置redis的key-value,程序运行没有问题,但是却在redis客户端查不到设置的key-value. 2.产生原因 出现这种乱码前缀的原因是没有进 ...