首先我觉得有必要明确什么是依赖注入,少废话,上代码:
// Dependency injection provides flexibility and testability
public class SpellChecker {
private final Lexicon dictionary;
public SpellChecker(Lexicon dictionary) {
this.dictionary = Objects.requireNonNull(dictionary);
}
public boolean isValid(String word) { ... }
public List<String> suggestions(String typo) { ... }
}
这种注入依赖资源的行为,我们称为依赖注入。极大地提升了类的灵活性、可重用性和可测试性
依赖注入的实现可以有很多种方式,如构造器、静态工厂和建造者模式。大量的依赖注入会让代码显得繁琐,所以诞生了不少的依赖框架,如Dagger,Guice等。