IoC学习第一期小结 20150318

此为本人学习spring小结,进度:已初步了解原理,但还未涉及源码阅读,放在二期学习spring中

这段时间转入java开发,学习spring相关技术,里面有个核心概念,IoCInversion of control)控制反转,也称为依赖倒置原理,对此进行了以下学习小结。

1 里氏代换原则:子类型必须能够替换掉它们的父类型。即一个软件实体如果使用的是一个父亲的话,那么一定适用于其子类,而且它觉察不出父类型和子类对象的区别。也就是说,把父类替换成它的子类,程序的行为是没有变化的,只有这样,父类才能真正被复用,而子类也能在父类的基础上增加新的行为。如父亲是鸟类,子类如果是企鹅,则不成立,因为父类鸟类都会飞,企鹅不会飞,不适用里氏替换原则。

思考优点:这样由于子类型的可替换行才使得使用父类类型的模块在无需修改的情况下就可以扩展。

 

2 依赖倒置原则:

A 高层模块不应该依赖底层模块,两者都应该依赖于抽象。

B 抽象不应该依赖于细节,细节应该依赖于抽象。

    这也体现了一个设计理念:针对接口编程,而不是实现。

在高层模块不依赖底层模块,如电脑主板和各个零部件一样,cpu不依赖于具体主板,如果主板坏了,可以换一块主板,cpu照样可以插在主板之上。这是由于各个抽象标准化接口。

高层模块依赖于底层模块,在如一个数据库项目,高层模块大多访问数据库,所以我们就把访问数据库的代码写成函数,每次做新项目的时候就调用这些函数,这叫高层模块依赖于底层模块。试想一个新项目,告成模块业务逻辑一样,但是客户希望使用不同的数据库或者存储方式,此时就无法复用高层模块了。

 

3控制反转(IoC=Inversion ofControl)IoC,用白话来讲,就是由容器控制程序之间的(依赖)关系,而非传统实现中,由程序代码直接操控。这也就是所谓“控制反转”的概念所在:(依赖)控制权由应用代码中转到了外部容器,控制权的转移,是所谓反转。

IoC也称为好莱坞原则(Hollywood Principle):“Don’t call us, we’ll call you”。即,如果大腕明星想演节目,不用自己去找好莱坞公司,而是由好莱坞公司主动去找他们(当然,之前这些明星必须要在好莱坞登记过)。

 

 

之所以会有这么多称呼,是由于角度不同所致。

 

4 IoC实现方式

A依赖查找:容器提供回调接口和上下文条件给组件,ejb;

B 依赖注入:容器全权负责组件的装配,通过javabean属性和构造函数给需要的对象。

 

5 IoC在java中实现是基于java的反射机制

 

6 工厂设计模式(简单工厂,工厂模式,抽象工厂模式,反射机制)

 

 

之后大家可以选择两本书并结合源码看下实现机制

1钱安川 spring教程 之 spring的IoC容器

2精通spring 第三章

3 spring源码

 

 

参考:

1 《大话设计模式》 程杰著 第五章

2 百度百科IoC

3 钱安川 spring教程 之 spring的IoC容器

4 精通spring 第三章

 

你可能感兴趣的:(Spring学习,spring,IoC)