控制反转(IoC)和依赖注入(DI)模式都是关于从代码中删除依赖的。
例如,假设您的应用程序具有文本编辑器组件,而您想提供拼写检查。您的标准代码如下所示:
public class TextEditor { private SpellChecker checker; public TextEditor() { this.checker = new SpellChecker(); }}
我们在这里所做的创建了
TextEditor和之间的依赖关系
SpellChecker。在IoC场景中,我们改为执行以下 *** 作:
public class TextEditor { private IocSpellChecker checker; public TextEditor(IocSpellChecker checker) { this.checker = checker; }}
在第一个代码示例中,我们实例化了
SpellChecker(
this.checker = newSpellChecker();),这意味着
TextEditor该类直接依赖于
SpellChecker该类。
在第二个代码示例中,我们通过
SpellChecker在
TextEditor构造函数签名中具有依赖项类来创建抽象(而不是在类中初始化依赖项)。这使我们可以调用依赖项,然后将其传递给TextEditor类,如下所示:
SpellChecker sc = new SpellChecker; // dependencyTextEditor textEditor = new TextEditor(sc);
现在,创建
TextEditor类的客户端可以控制
SpellChecker要使用的实现,因为我们将依赖项注入了
TextEditor签名中。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)