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依赖注入模式的轻量级容器。

相关文章

迭代器模式(Iterator)迭代器模式(Iterator)[Cursor]意图...
高性能IO模型浅析服务器端编程经常需要构造高性能的IO模型,...
策略模式(Strategy)策略模式(Strategy)[Policy]意图:定...
访问者模式(Visitor)访问者模式(Visitor)意图:表示一个...
命令模式(Command)命令模式(Command)[Action/Transactio...
生成器模式(Builder)生成器模式(Builder)意图:将一个对...