面试题答案
一键面试构造函数注入
- 优点:
- 依赖关系在对象创建时就明确,代码可读性强,容易理解对象所需的依赖。
- 确保依赖在对象使用前就已被注入,避免空指针异常。
- 便于进行单元测试,可方便地传入模拟依赖。
- 缺点:
- 如果依赖过多,构造函数参数列表会变得很长,使代码维护性变差。
- 子类继承时,构造函数签名需保持一致,限制了灵活性。
Setter方法注入
- 优点:
- 灵活性高,对象创建后可动态改变依赖。
- 对于可选依赖较为适用,不需要在构造函数中强制传入。
- 代码简洁,不会像构造函数注入那样因参数过多而复杂。
- 缺点:
- 可能在使用对象时依赖还未注入,导致运行时错误。
- 可读性不如构造函数注入,难以一眼看出对象的完整依赖关系。
接口注入
- 优点:
- 依赖注入的逻辑与具体实现解耦,提高了代码的可维护性和可测试性。
- 便于在不同环境下切换依赖的具体实现。
- 缺点:
- 增加了代码的复杂性,需要定义额外的接口和实现类。
- 对于简单应用场景,可能显得过于繁琐。