IOC是将对象内部的依赖解藕 将原先内部的控制反转给了类之外 又称Dependence Injection

前端之家收集整理的这篇文章主要介绍了IOC是将对象内部的依赖解藕 将原先内部的控制反转给了类之外 又称Dependence Injection前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
IOC是将对象内部的依赖解藕将原先内部的控制反转给了类之外又称DependenceInjection IoC的几种实现类型 (1)Type1接口注入 通常做法是利用接口将调用者与实现者分离。 publicclassSport{ privateInterfaceBallball;//InterfaceBall是定义的接口 publicvoidinit(){ //Basketball实现了InterfaceBall接口 ball=(InterfaceBall)Class.forName("Basketball").newInstance(); } } Sport类在编译期依赖于InterfaceBall的实现,为了将调用者与实现者分离,我们动态生成Basketball类并通了强制类型转换为InterfaceBall。ApacheAvalon是一个典型的Type1型IoC容器。 (2)setter方法注入 在类中暴露setter方法来实现依赖关系。 publicclassSport{ privateInterfaceBallball; publicvoidsetBall(InterfaceBallarg){ ball=arg; } } 这种方式对已经习惯了JavaBean的程序员而言,更显直观。Spring就是实现了该类型的轻量级容器。 (3)Type3构造子注入 即通过构造方法完成依赖关系。 publicclassSport{ privateInterfaceBallball; publicSport(InterfaceBallarg){ ball=arg; } } 可以看到,通过类的构造方法建立依赖关系。由于Type3在构造期就形成了对象的依赖关系,即存对象的重用变的困难。有些框架需要组件提供一个默认的构造方法,此时就体现了Type3的局限性。通常所有的参数都是通过构造方法注入的,当对象间的依赖关系较多时,构造方法就显的比较复杂,不利于单元测试。PicoContainer就是实现了Type3依赖注入模式的轻量级容器。

猜你在找的设计模式相关文章