简述:IOC并不是一种技术,而是一种思想,其作用是用于削弱代码间的耦合.它的实现思想就是利用了工厂模式,把创建对象从具体类中剥离出去,交由工厂来完成,从而减低代码间的依赖关系.

    耦合有如下分类:
    1.内容耦合 : 当一个模块修改或操作另一个模块的数据时,或一个模块不通过正常入口而转入另一个模块时,这样的耦合被称为内容耦合.内容耦合是耦合度最高的的耦合,应该避免使用.

    2.公共耦合 : 两个或两个以上的模块共同引用一个全局数据项,这种耦合被称为公共耦合.在具有大量公共耦合的结构中,确定究竟是那个模块给全局变量赋了一个特定的值是十分困难的.

    3.外部耦合 : 一组模块都访问同一全局简单变量而不是同一全局数据结构,而且不是通过参数传递该全局变量的信息,则称之为外部耦合.

    4.控制耦合 : 一个模块通过接口向另一个模块传递一个控制信息,接受信号的模块根据信号值而进行适当的动作,这种耦合被称为控制耦合.

    5.标记耦合 : 若一个模块A通过接口向两个模块B和C传递一个公共参数,那么称模块B和C之间存在一个标记耦合.

    6.数据耦合 : 模块之间通过参数来传递数据,那么被称为数据耦合.数据耦合是最最低的一种耦合形式,系统中一般都存在这种类型的耦合,因为为了完成一下又意义的功能,往往需要将某些模块的输出数据作为另一些模块的输入数据.

    7.非直接耦合 : 两个模块之间没有直接关系,他们之间的联系完全是通过主模块的控制和调用来实现的.

    软件解耦的一般原则:如果模块间必须存在耦合,就尽量使用数据耦合,少用控制耦合,限制公共耦合的范围,尽量避免使用内容耦合.