您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

什么是控制反转?

什么是控制反转?

控制反转(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;
    }
}

在第一个代码示例中,我们实例化了SpellCheckerthis.checker = new SpellChecker();),这意味着TextEditor该类直接依赖于SpellChecker该类。

在第二个代码示例中,我们通过SpellCheckerTextEditor构造函数签名中具有依赖项类来创建抽象(而不是在类中初始化依赖项)。这使我们可以调用依赖项,然后将其传递给TextEditor类,如下所示:

SpellChecker sc = new SpellChecker; // dependency
TextEditor textEditor = new TextEditor(sc);

现在,创建TextEditor类的客户端可以控制SpellChecker要使用的实现,因为我们将依赖项注入了TextEditor签名中。

其他 2022/1/1 18:19:05 有528人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶