开发中的点点滴滴 2015-04-27
Android作为新一代的操作系统,集合着Google多少工程师的智慧结晶。各种新技术,老技术,在Android系统框架中得到了最完美的体现。
在以前做Web开发时就感觉什么SSH框架简直太棒了,写出这些框架的大牛太厉害了。里面的IoC思想真的令人心动。值得高兴的时,这些东西也都在Android中加以实现。下面我们聊聊对Ioc的理解。
IoC主要分为2步:
1.控制反转-反向控制。以往的开发过程中,都是应用程序去调用系统的接口方法,比如调用系统library,这种做法的特点是,控制权掌握在应用程序手中。而控制反转就是在系统框架中,已经定义好了具体的操作模式,应用只需要实现部分借口就可以,所以这个控制流程掌握在框架手中。
与反向控制相对的是正向控制,如子类调用父类的方法,实现类调用系统库函数等
举例:
android中的框架中ActivityThread等已经定义好了activity的生命周期函数的执行顺序,而应用程序做的就是给这些个生命周期函数进行实现填充,控制权掌握在android手中。
2.依赖注入。实现组件间关系从程序内部提到外部容器来管理。也就是说由容器在运行期将组件间的某种依赖关系动态的注入组件中。控制程序间关系的实现交给了外部容器来完成。
为了更好的理解依赖注入,下面通过例子说明下:
假设有两个类B和C:B作为调用者,C是被调用者。
一般的做法是:
publicclassB{
privateCcomp=newC();
......
}
如果用设计模式-工厂模式实现:
publicclassB{
privateCcomp;
privatefinalstaticMyFactorymyFactory=MyFactory.getInstance();
publicB(){
this.comp=myFactory.createInstanceOfC();
}
publicvoidsomeMethod(){
this.comp.sayHello();
}
}
使用Ioc依赖性注射实现:
publicclassB{
privateCcomp;
publicB(Ccomp){
this.comp=comp;
}
publicvoidsomeMethod(){
this.comp.sayHello();
}
}
这个就和模板模式有点类似,只是模板模式的使用范围有点窄而已。
通过以上例子应该很容易理解IoC机制的特点。
其实Android中还用到了很多设计模式,下面简单看看都有哪些及具体体现:
组合模式:
View和ViewGroup组合成树形结构表示部分-整体,其中view可以作为ViewGroup的一部分。
单例模式:
这种模式在Android中随处可见,如CalendarDatabaseHelper.java中就有。
职责链模式:
如触发的Touch事件的传递就是典型的职责链模式。
备忘录模式:
如ACTIVITY活动状态的保存和恢复就是采用备忘录模式的一个例子。
观察者模式:
观察者模式提供了ANDROD架构连接件的基础,在系统提供的广播组件及内容提供者组件、通知服务中以及视图控件和底层事件监听、UI事件输入等许多方面普遍采用。
在android中采用的模式还有很多,留待以后慢慢发掘。