好处
- 将被依赖类的创建代码从 依赖类中移出,不用显式的写new。
- 可以单独维护 被依赖类的创建 过程。
方便该类的被共享。
如果该类初始化时,所需属性很多,使用配置,远比硬代码编写简单。
比如DataSource配置 数据库连接池时。
- 有多层依赖时,依赖关系的移出,事实上简化了 依赖关系的查看和维护。
因为对每个类而言,只需要关心这个类的依赖。
以WEB项目为例,Controller层只需要关心Service层,Service层只需要关心Dao层。
有可能一个Service中使用了N多的Dao,来实现一个方法中的逻辑。
但是Controller只要引用这个Service,调用这个方法。
- 保证依赖不可变(final关键字)
- 保证依赖不为空(省去了我们对其检查)
- 保证返回客户端(调用)的代码的时候是完全初始化的状态
- 避免了循环依赖
- 提升了代码的可复用性