IOC控制反转手记

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后对象将会被动的接受它所依赖的类而不需要自己去找该类,容器会将对象的以来类提供给他**。
此文为博主学习所用,如有错误欢迎指正!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值