简单地说,loC 是反转控制,类似于好莱坞原则,主要有依赖查找和依赖注入实现
● 1983年,Richard E. Sweet在《The Mesa Programming Environment》中提出"Hollywood Principle”( 好莱坞原则) ● 1988年,Ralph E. Johnson & Brian Foote在《Designing Reusable Classes》中提出"Inversion of control" ( 控制反转) ● 1996年,Michael Mattson在《Object-Oriented Frameworks, A survey of methodological issues》中将"Inversion of control"命名为"Hollywood principle" ● 2004年, Martin Fowler在《Inversion of Control Containers and the Dependency Injection pattern》中提出了自己对IoC以及DI的理解 ● 2005年,Martin Fowler在《InversionOfControl》对loC做出进一步的说明
依赖查找 lookup 依赖注入 injection
●依赖处理 ●依赖查找 ●依赖注入
●容器 ●托管的资源(Java Beans或其他资源)
●容器 ●外部化配置 ●托管的资源(Java Beans或其他资源)
Java Beans Java Servicel oader SPI JNDI (Java Naming and Directory Interface)
EJB (Enterprise Java Beans) Servlet
Apache Avalon (http://avalon.apache.org/ closed.htmI) PicoContainer (http://picocontainer.com/) Google Guice (https://github.com/google/guice) Spring Framework (https://spring.io/projects/spring -framework)
依赖查找是主动或手动的依赖查找方式,通常需要依赖容器或标准API 实现。而依赖注入则是手动或自动依赖绑定的方式,无需依赖特定的容器和API
具体区别:
典型的IoC管理,依赖查找和依赖注入 AOP抽象 事务抽象 事件机制 SPI扩展 强大的第三方整合 易测试性 更好的面向对象