Effective Java -- 引用资源时优先依赖注入

此系列文章为本人对《Effective Java》一书的学习笔记,主要是记录对书中重点内容的理解。
既然有缘看到此文,那么希望能对你有所帮助。
本文对应原书 第5条 优先考虑依赖注入来引入资源

什么是引用资源

很简单,当你的类中需要某一个基础的类,使用其功能以构造自己的功能,比如,要准备一个检查外语拼写的类,你就需要在这个类中引用一个基础的资源 – 字典,于是你写了这样一个类:

public class SpellChecker {
	// 引用了一个英文词典
	private static final Dict dictionary = new EnglishDict();
	
	// 对外提供检查拼写的方法
	public static boolean check(String word) { ... }
	
	...
}

这样的写法并没有什么错误,但局限性很大,因为这个类只提供了一个英文词典,当你需要多语言进行检查的时候,这个类就无法正常完成任务。
当然,你也可以强行将dictionary 设置为非final,然后增加一个方法来对其进行修改,但这样看起来十分笨拙而且容易出错。

什么是依赖注入

依赖注入,dependence injection,因为spring已经家喻户晓,所以相信这个名词听起来不会陌生,但其实所表达的意思非常简单,就是把需要的资源(依赖)传入类中
你可以通过构造器或者setter方法去完成注入,这里举个构造器的例子:

public class SpellChecker {
	// 还是一个词典,但具体引用哪个,没确定
	private static final Dict dictionary;
	
	// 在实例化时,传入所需要的字典
	public SpellChecker(Dict dictionary) {
		this.dictionary = dictionary;
	}
	
	// 对外提供检查拼写的方法
	public static boolean check(String word) { ... }
	
	...
}

就是这么简单,相信很多人都知道这样去写,但是并不了解它依赖注入这个大名。

当然,依赖注入虽好,也不能贪杯哦,它可以大幅度提升代码的灵活性和测试性,但是也会导致大型项目凌乱不堪,因为大项目的依赖数量实在太多了,但是不要慌,这种凌乱我们可以寻求无敌spring的帮助,对于站在云端的他来说,这正是最擅长的活。

总结

简而言之,记住依赖注入这个名,引用资源的话优先使用他,当然如果你是一个spring使用者,相信依赖注入早已在你的灵魂之中了。

水平有限,若文章中存在错误,恳请不吝赐教,这对我以及后面的读者都有重要意义;
若文章能够帮助到你,还望一键三连,你的支持,是我最大的动力。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值