重庆律师网站建设,网站** 教程,惠州住房和城乡建设局网站,自己做流媒体网站难控制反转[编辑] 维基百科#xff0c;自由的百科全书控制反转#xff08;Inversion of Control#xff0c;缩写为IoC#xff09;#xff0c;是面向对象编程中的一种设计原则#xff0c;可以用来减低计算机代码之间的耦合度。其中最常见的方式叫做依赖注入#xff08;Depe… 控制反转[编辑] 维基百科自由的百科全书 控制反转Inversion of Control缩写为IoC是面向对象编程中的一种设计原则可以用来减低计算机代码之间的耦合度。其中最常见的方式叫做依赖注入Dependency Injection简称DI还有一种方式叫“依赖查找”Dependency Lookup。通过控制反转对象在被创建的时候由一个调控系统内所有对象的外界实体将其所依赖的对象的引用传递给它。也可以说依赖被注入到对象中。 目录 [隐藏] 1起源2技术描述3实现方法 3.1依赖注入3.2依赖查找 4控制反转应用实例 4.1C4.2Java4.3.NET4.4PHP 5参考文档6外部链接7参考文献 起源[编辑] 早在2004年Martin Fowler就提出了“哪些方面的控制被反转了”这个问题。他总结出是依赖对象的获得被反转了因为大多数应用程序都是由两个或是更多的类通过彼此的合作来实现业务逻辑这使得每个对象都需要获取与其合作的对象也就是它所依赖的对象的引用。如果这个获取过程要靠自身实现那么这将导致代码高度耦合并且难以维护和调试。 技术描述[编辑] Class A中用到了Class B的对象b一般情况下需要在A的代码中显式的new一个B的对象。 采用依赖注入技术之后A的代码只需要定义一个私有的B对象不需要直接new来获得这个对象而是通过相关的容器控制程序来将B对象在外部new出来并注入到A类里的引用中。而具体获取的方法、对象被获取时的状态由配置文件如XML来指定。 实现方法[编辑] 实现控制反转主要有两种方式依赖注入和依赖查找。两者的区别在于前者是被动的接收对象在类A的实例创建过程中即创建了依赖的B对象通过类型或名称来判断将不同的对象注入到不同的属性中而后者是主动索取响应名称的对象获得依赖对象的时间也可以在代码中自由控制。 依赖注入[编辑] 依赖注入有如下实现方式 基于接口。实现特定接口以供外部容器注入所依赖类型的对象。基于 set 方法。实现特定属性的public set方法来让外部容器调用传入所依赖类型的对象。基于构造函数。实现特定参数的构造函数在新建对象时传入所依赖类型的对象。基于注解。基于Java的注解功能在私有变量前加“Autowired”等注解不需要显式的定义以上三种代码便可以让外部容器传入对应的对象。该方案相当于定义了public的set方法但是因为没有真正的set方法从而不会为了实现依赖注入导致暴露了不该暴露的接口因为set方法只想让容器访问来注入而并不希望其他依赖此类的对象访问。 依赖查找[编辑] 依赖查找更加主动在需要的时候通过调用框架提供的方法来获取对象获取时需要提供相关的配置文件路径、key等信息来确定获取对象的状态