IOC控制反转手记

来源:互联网 发布:清除数据恢复出厂英文 编辑:程序博客网 时间:2024/05/21 06:37
IOC(Inverse of Control) 通常被称为控制反转 ,是一种设计模式,主要关注组件的依赖性,配置,以及组件的生命周期。IOC也适应与类,同常情况下调用一个类的是弘扬,必须由自己创建一个调用类的对象的示例;采用IOC 模式以后,创建类的实例的任务交给容器或者框架来完成,应用程序直接使用容器或者框架中的创建的类的对象即可。
public class Song{    public void sing(){        ZhouJielun zj =new ZhouJielun();        zj.singsong("song");    }}

上面代码事件的依赖关系为,唱歌事件依赖于ZhouJielun 这个对象,通过直接调用ZhouJielun这个对象的方法singsong 来完成唱歌这一事件的发生,如果ZhouJielun这一对象出现异常,那么唱歌事件将无法发生,这样写出来的程序耦合度高。

public class song{    public void sing(){        singer asinger =new singer();        singer.singsong("song");    }}
上面的这段代码引入了一个singer 的接口,通过接口来完成唱歌的事件,这样一来,如果ZhouJielun来不了了,可以选择其他的对象来完成演唱的事件,这样就由个人演唱会变成了群星演唱会。不过这样一来一来关系变成了唱歌事件依赖于singer对象和ZhouJielun,并没有实现真正的解耦,要想实现真正的解耦,可以在唱歌这一过程中加入一个导演,实现让导演控制整个流程,导演负责将ZhouJielun这个对象设定为演唱者,至于唱什么,怎么唱,最由ZhouJielun这个对象来决定,以此方式来完成演唱事件。加入导演以后,song中的sing方法不再依赖于ZhouJielun这个对象,整个演唱事件都是有导演来控制,一个Director类来控制各对象之间的调用关系,各个零散的对象由Director统一和装配完成演唱事件,在这之中,Director所起的作用,就是开头说的容器或者框架实现的功能。**控制反转IOC 包括两部分内容,一部分是控制,另一部分是反转,,控制指的是对象应该调用那个类的控制权,反转指的是控制权由调用对象转移到容器或者框架。使用IOC后对象将会被动的接受它所依赖的类而不需要自己去找该类,容器会将对象的以来类提供给他**。此文为博主学习所用,如有错误欢迎指正!
0 0