白话控制反转(IOC)和依赖注入

IOC是Inversion of Control的缩写,多数书籍翻译成“控制反转”,还有些书籍翻译成为“控制反向”或者“控制倒置”。
 这概念太抽象了,首先从语言入手 理解这问题。
 控制反转?
 谁控制谁,谁反转。
 这根本没有主语,这理解起来太抽象了。
 那么变成,如下的关系。

class A{
 void fun(){
 	system.out.println("A:fun");
 }
}
class B{
 public A mA;
 public B(){
 	mA = new A;
 }
 void fun(){
 	b.fun();
 }
}
class C{
 static public void main(){
 	B b = new B();
 	b.fun();	
}
}

上面的例子中,B依赖于A;B控制A的创建。
那么控制反转是不是B控制A的创建?
不是期初我也是这么理解的。
那么怎么反转呢?
就是把依赖对象的创建架构C,
那么将如下的一个描述做控制反转。
C使用B完成一个机能,B依赖于A,B创建A。
控制反转后。
C使用B完成一个机能,B告诉X,我还需要B的帮忙,X说,这个不用你管,用你的时候我自然会把A注入给你。
于是程序变成这样

class A{
	void fun(){
		system.out.println("A:fun");
	}
}
class B{
	public A mA;
	public B(){
		mA = new A;
	}
	void fun(){
		b.fun();
	}
}
class Spring{
	//这里的具体机能略,说白了就是一一些反射技术的运用。
	public objext get(String className){
		object x = create(className);
		return x;
	}
}
class C{
	static public void main(){
		//主要体现在这里有变化
		B b = Spring.get("B");
		b.fun();	
   }
}

以上就是控制反转、依赖注入的过程。
B控制A的创建,变成了Spring控制A的创建,等同于C把对象创建的过程都交给了Spring来完成。
控制反转转的是啥把B对A创建的控制转给了框架,这里就相当于Spring。
依赖注入,把B对A的依赖转换成了框架为B做对象注入。

总结一下
反转就是,把对对象创建的控制转给了框架。
把依赖的关系用框架注入的方式完成。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值