当前位置:  开发笔记 > 运维 > 正文

默认构造函数与IOC容器

如何解决《默认构造函数与IOC容器》经验,为你挑选了1个好方法。

有人可以向我解释使用IOC容器而不是简单地将默认实现硬编码到默认构造函数中的优势吗?

换句话说,这段代码有什么问题?

public class MyClass
{
    private IMyInterface _myInterface;

    public MyClass()
    {
        _myInterface = new DefaultMyInterface();
    }

    public MyClass(IMyInterface myInterface)
    {
        _myInterface = myInterface;
    }
}

据我所知,这个类足够支持构造函数注入,因此可以轻松完成单元测试和模拟.除此之外,默认构造函数移除了IOC容器的计算开销(更不用说整个过程更加透明).

我可以看到使用IOC容器的唯一好处是,如果您需要经常切换接口的实现.我错过了什么吗?



1> aku..:

IoC的想法是将组件的部分功能委托给系统的另一部分.在IoC世界中,您拥有彼此不了解的组件.您的示例违反了这一点,因为您在MyClass和IMyInterface的某些实现之间创建紧密耦合.主要思想是您的组件不知道如何使用它.在您的示例中,您的组件对其使用做出了一些假设.

实际上这种方法可行,但混合IoC和显式对象初始化并不是一个好的做法IMO.

IoC通过以代码清晰度的代价执行后期绑定来为您提供松散耦合.当您向此进程添加其他行为时,它会使事情变得更加复杂,并且当某些组件可能会接收具有不需要或不可预测的行为的对象时,可能会导致错误.

推荐阅读
谢谢巷议
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有