惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

aimingoo的专栏
aimingoo的专栏
Google DeepMind News
Google DeepMind News
S
SegmentFault 最新的问题
Project Zero
Project Zero
D
DataBreaches.Net
I
InfoQ
L
Lohrmann on Cybersecurity
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
酷 壳 – CoolShell
酷 壳 – CoolShell
Stack Overflow Blog
Stack Overflow Blog
The Register - Security
The Register - Security
Recorded Future
Recorded Future
Vercel News
Vercel News
博客园 - 司徒正美
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
I
Intezer
The Hacker News
The Hacker News
F
Fortinet All Blogs
Microsoft Azure Blog
Microsoft Azure Blog
P
Proofpoint News Feed
Help Net Security
Help Net Security
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
Application and Cybersecurity Blog
Application and Cybersecurity Blog
Scott Helme
Scott Helme
T
Threatpost
爱范儿
爱范儿
N
Netflix TechBlog - Medium
D
Docker
云风的 BLOG
云风的 BLOG
C
Cisco Blogs
K
Kaspersky official blog
H
Help Net Security
S
Secure Thoughts
T
Threat Research - Cisco Blogs
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
S
Security @ Cisco Blogs
Cyberwarzone
Cyberwarzone
N
News and Events Feed by Topic
G
Google Developers Blog
Forbes - Security
Forbes - Security
博客园 - 三生石上(FineUI控件)
博客园 - 叶小钗
B
Blog
Google DeepMind News
Google DeepMind News
Recent Announcements
Recent Announcements
Simon Willison's Weblog
Simon Willison's Weblog
S
Securelist
P
Privacy International News Feed
Spread Privacy
Spread Privacy
The Last Watchdog
The Last Watchdog

博客园 - wzc998

Oracle Audit 关于"cannot perform a DDL, commit or rollback inside a query or DML" 错误 关于varchar2在pl/sql和schema级别的最大值 ORA-01031 权限不足错误的解决 通过代码备份存储过程,package body 和表数据 并还原 XSL ASP .net实现松耦合事件的三种方法 Log4net不同版本在app.config和web.config的配置区别 SQL*Loader FAQ 【转】NLS 视图的研究 oracle多语言环境下to_date时间转换问题 【转】如何使用 ADO.NET 和 Visual C# .NET 调用带参数的存储过程 【转】SQL SERVER 存储过程学习笔记 【转】代码复用原则:合理使用类组合和类继承 委托与接口的关系 【转】范式 【转】oracle范式与交叉表 oracle存储过程返回交叉表(使用存储过程/高级语言调用)
IOC
wzc998 · 2010-08-26 · via 博客园 - wzc998

定义:IOC(Inversion of Control)控制反转模式,意味着去除所有由该类产生但不由该类直接负责的对象实例,而改由外界传入。通过IoC模式可以彻底解决耦合,它把耦合从代码中移出去,放到统一的XML文件中,通过一个容器在需要的时候把这个依赖关系形成,即把需要的接口实现注入到需要它的类中。

控制反转:传统应用,程序事先定义好接口的实现。而IOC模式里程序接口的实现是由“容器”(程序员控制)掌管,程序由自发创建接口的实现变为容器(程序员指挥容器)指挥创建,这可能就是所谓“控制反转”的原因了。

  传统的DOC程序->windows应用,是一种控制反转的应用。

  传统没有IOC控制的应用->IOC控制实现的应用也是一种控制反转的应用。

IOC: 从以下几点可以看出,IOC将设计模式运用到了炉火纯青的地步。

  1,解决复杂调用关系:如果你的项目中有非常多的类;调用关系很复杂,而且调用关系随时都可能变化,那么,使用无需照顾调用关系的Ioc容器无疑是减轻开发负担的首选。   

  2,实现好的工厂模式:可以把IoC模式看做是工厂模式的升华,可以把IoC看作是一个大工厂,只不过这个大工厂里要生成的对象都是在XML文件中给出定义的,然后利用高级语言 的“反射”编程,根据XML中给出的类名生成相应的对象。

  3,解决耦合问题(可以看做是工厂模式的作用嘛):通过文本的配件文件进行应用程序组件间相互关系的配置,而不用重新修改并编译具体的代码。但需要重新运行服务来使配置文件被重新读取。

  4,使用接口的好处:IOC使用接口来调用对象,只要对象互相尊重(respect)对方的接口,对象的封装性也就得到了良好地维护,在运行期间,任何对象都能够被替换为其他相同类型的对象。

IOC容器:实现了IOC模式的IOC容器。