IOC模式简介

IOC模式介绍
        IOC全称Inversion of Control,是Apache Avalon项目创始人之一,Stefano Mazzocchi提出的,该模式主要强调设计的安全性。
IOC模式是什么
        在该模式中,Framework扮演了主程序的角色,负责协调事件及应用的活动。
设计者在对象中建立一个链,该链上的所有对象都可以用代理的方式响应某种确定格式的消息。IOC(翻转控制)有一个语意上的细节,那就是父对象控制子对象。由这点可以看出,SAX API不能算IOC,因为它的目的是从源发送信息到一个处理器。
注:代理(delegation),java中的classLoader就是采用的代理机制,在load一个类时,先让parent class loader去load,只有父类都不能load时,才尝试自己load
类似定义:
        还有一些类似但不同的概念可以帮助你来理解IOC模式。
        一个类似的例子是军队中的命令链(Chain of Command)。
        这 可能是最类似的例子了。军队根据每个新兵的等级为他们提供所需的基本装备,并发布新兵必须遵守的命令。同样的规则可以应用到编程中。每一个组件(构件 component)都被初始化实体(instantiating entity,像军队中的指挥官)指定了需要实现的操作。初始化实体可以操纵这些组 件,告诉他们需要如何去做。
        在这个类比中有一些不太相同的地方,在军队中,只要是级别比自己低的军人,指挥官都可以向其发号施令,但是在编程中,出于安全性的考虑,你肯定不会希望是这样。
如何应用:
        IOC应用很简单,基本上组件架构使用了一种被动的结构,看如下代码:


class MyComponent 
    implements LogEnabled
{
    Logger logger;

    public enableLogging(Logger newLogger)
    {
        this.logger = newLogger;
    }

    myMethod() 
    {
        logger.info("Hello World!");
    }
}
        
        MyComponent的父类初始化MyComponent,设置了Logger,并调用myMethod方法。组件并不是自治的,他接受了父类传递给他经过父类配置好的logger对象。

        MyComponent类没有从父类那里获得任何状态,并且如果没有父类给他传递的话,也无法获取一个logger的引用。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值