认识IOC-不用你找,我来提供给你
英文名:Inversion of Control
中文名:控制反转
简单解释:生命周期由框架控制
为什么是反转?
框架在前,程序在后
框架调用程序
程序的生命周期由框架控制
汇总
-
流程决定于
framework
题外话:Framework与library的区别:library仅仅只是提供api接口,而Framework除了提供api之外,更重要的是提供IOC机制,对程序的生命中期进行控制。
现在,我们看一个利用最简单的继承实现的IOC。
public class MyView extends View {
private Paint paint;
public MyView(Context context) {
super(context);
private Paint paint= new Paint();
}
public void ReDraw() { this.invalidate(); }
@Override
protected void onDraw(Canvas canvas) { //画长方形
paint.setAntiAlias(true);
paint.setColor(Color.YELLOW);
canvas.clipRect(30, 30, 100, 100);
}
}
简单的分析下上面的这个程序
MyView
继承
View
执行到
ReDraw
()
时,正向调用
framework
的
invalidate();
Framework
反向调用
MyView
的
onDraw
(),
此为重载回调。
上述为IOC的基本方式,那么Framework干了一个很简单的工作,只要聚合父类和集成接口就好了,这样的话,就利用这种思想实现了IOC。