IOC&DI
2024-09-02 20:44:42
【概述】
1.IOC(Inversion of Control):
即“反转控制”,不是什么技术,而是一种设计思想。其思想是反转资源获取的方向。
传统的资源查找方式要求组件向容器发起请求查找资源。作为回应,容器适时地返回资源。
而在应用了IOC之后,则是容器主动地将资源推送给它所管理的组件,组件所要做的仅是选择一种合适的方式来接受资源。这种行为也被称为查找的被动形式。
所谓IOC其实就是打破原有的由类自身创建对象改变为由容器来创建对象。IOC主要包含反转(角色的反转)和控制(对象的创建)两个部分。
【猩生柯北举栗子:就好像是以前买菜你需要亲自提着菜篮子去菜市场买菜,而现在用了IOC后就不用亲自去菜市场了了,你只需要将菜篮子放在家门口,菜就会自己到你的篮子里面。】
2.DI(Dependency Injection)--IOC的另一种表述方式:即组件以一些预定义好的方式(例如:setter方法)接受来自如容器的资源注入。相对于IOC而言,这种表述更加直接。
【示例】
class A{}
class B{
private A a;
public void setA(A a){
this.a = a;
}
}
需求:从容器中获取B对象,并使B对象的a属性被赋值为容器中A对象的引用。
传统方式:
A a = getA(); //获取A
B b = getB(); //获取B
b.setA(a); //建立关联关系
用IOC容器:
B b = getB();
说明:用IOC容器后,容器通过setter方法自动把A对象的引用赋给了B对象的a属性。
IOC发展:分离接口和实现(原始社会),工厂设计模式(封建社会),反转控制(按需分配)。
最新文章
- applicationContext.xml
- Struts.xml中Action的method与路径的三种匹配方法
- ubuntu12.10 源更新出错(sudo apt-get update)
- org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 1; 前言中不允许有内容。
- GridView----CustomRowCellEdit 使用注意事项
- 推荐算法——距离算法
- LINQ to SQL语句非常详细(原文来自于网络)
- SQL在指定列后添加新的列
- mysqldump 参数说明
- 微软职位内部推荐-Senior Software Development Engineer
- openstack私有云布署实践【11.2 计算nova - compute节点配置(办公网环境)】
- 如何创建一个Django项目
- git忽略文件并删除git仓库中的文件
- SQL Server元数据损坏(metadata corruption)修复
- Exception in thread ";main"; org.I0Itec.zkclient.exception.ZkAuthFailedException: Authentication failure is thrown while creating kafka topic
- Scrum【转】
- 使用 curl 进行 ssl 认证
- (Java)入门训练 斐波那契数列
- Flink - ResultPartition
- python+unittet在linux与windows使用的区别