Android作为新一代的操作系统,集合着Google多少工程师的智慧结晶。各种新技术,老技术,在Android系统框架中得到了最完美的体现。
在以前做Web开发时就感觉什么SSH框架简直太棒了,写出这些框架的大牛太厉害了。里面的IoC思想真的令人心动。值得高兴的时,这些东西也都在Android中加以实现。下面我们聊聊对Ioc的理解。
IoC主要分为2步:
1.控制反转-反向控制。以往的开发过程中,都是应用程序去调用系统的接口方法,比如调用系统library,这种做法的特点是,控制权掌握在应用程序手中。而控制反转就是在系统框架中,已经定义好了具体的操作模式,应用只需要实现部分借口就可以,所以这个控制流程掌握在框架手中。
与反向控制相对的是正向控制,如子类调用父类的方法,实现类调用系统库函数等
举例:
android中的框架中ActivityThread等已经定义好了activity的生命周期函数的执行顺序,而应用程序做的就是给这些个生命周期函数进行实现填充,控制权掌握在android手中。
2.依赖注入。实现组件间关系从程序内部提到外部容器来管理。也就是说由容器在运行期将组件间的某种依赖关系动态的注入组件中。控制程序间关系的实现交给了外部容器来完成。
为了更好的理解依赖注入,下面通过例子说明下:
假设有两个类B 和 C:B作为调用者,C是被调用者。
一般的做法是:
public class B{
private C comp=new C();
......
}
如果用设计模式-工厂模式实现:
public class B{
private C comp;
private final static MyFactory myFactory = MyFactory.getInstance();
public B(){
this.comp = myFactory.createInstanceOfC();
}
public void someMethod(){
this.comp.sayHello();
}
}
使用Ioc依赖性注射实现:
public class B{
private C comp;
public B(C comp){
this.comp = comp;
}
public void someMethod(){
this.comp.sayHello();
}
}
这个就和模板模式有点类似,只是模板模式的使用范围有点窄而已。
通过以上例子应该很容易理解IoC机制的特点。
其实Android中还用到了很多设计模式,下面简单看看都有哪些及具体体现:
组合模式:
View和ViewGroup组合成树形结构表示部分-整体,其中view可以作为ViewGroup的一部分。
单例模式:
这种模式在Android中随处可见,如CalendarDatabaseHelper.java中就有。
职责链模式:
如触发的Touch事件的传递就是典型的职责链模式。
备忘录模式:
如ACTIVITY活动状态的保存和恢复就是采用备忘录模式的一个例子。
观察者模式:
观察者模式提供了ANDROD架构连接件的基础,在系统提供的广播组件及内容提供者组件、通知服务中以及视图控件和底层事件监听、UI事件输入等许多方面普遍采用。
在android中采用的模式还有很多,留待以后慢慢发掘。
分享到:
相关推荐
【摘要】本文主要探讨了设计模式在Android应用开发中的重要性,特别是在代码重构过程中的应用。随着Android系统的广泛使用和应用市场的激烈竞争,开发者面临着提升代码质量和运行效率的压力。文章指出,代码重构是...
本文将深入探讨两种常见的设计模式——MVC(Model-View-Controller)和MVP(Model-View-Presenter),并结合实际的TestMVP项目,解析它们在实际开发中的运用。 首先,我们来了解一下MVC模式。MVC是一种软件设计模式...
Android MVP(Model-View-Presenter)模式是一种常见的软件设计模式,用于改善Android应用的架构,提高代码的可测试性和可维护性。在Android开发中,MVP帮助开发者分离界面展示逻辑与业务逻辑,使得代码结构更加清晰...
### 浅谈Android的Selector背景选择器 #### 一、引言 在Android开发中,为了提高用户体验,经常需要对控件的外观进行定制化处理,特别是在不同的交互状态下展示不同的视觉效果。`Selector`作为Android中一个非常...
CDIO(Conceive-Design-Implement-Operate)是一种以工程教育为核心的教学模式,它强调学生在构思、设计、实现和运行过程中获取知识与技能。将CDIO模式应用于《Android手机程序设计》的教学评价中,有助于提升学生的...
本文将深入探讨如何在Android平台上设计一套船用北斗导航通信系统,为船舶提供准确、实时的定位、导航以及通信服务。 首先,我们要了解北斗导航系统的基本原理。北斗系统是中国自主建设的全球卫星导航系统,与GPS、...
本文将重点介绍在MTK平台下Android开发的特点,并与Qualcomm和Freescale平台进行对比分析。 #### 二、平台概述 **1. Qualcomm** - **简介:**Qualcomm是一家在通信领域享有盛誉的公司,特别是在ARM应用处理器方面...
### 浅谈模型-视图-控制器(MVC)模式 #### 一、MVC模式简介 MVC(Model-View-Controller),即模型-视图-控制器模式,是一种广泛应用于软件开发领域的设计模式,特别是在桌面应用和Web应用程序中。这种模式的...
### 浅谈框架与MVC #### 架构的重要性及概念 在软件开发领域,架构设计扮演着至关重要的角色。良好的架构设计不仅能够确保软件系统的稳定性、可维护性和可扩展性,还能提升团队协作效率。正如文章所述,“好的产品...
在Android客户端与服务器的数据交互中,通常涉及到网络通信方式、数据传输格式以及API设计规范等多个方面。以下将详细阐述这些知识点。 首先,Android客户端与服务器的通信方式主要包括HTTP和Socket。HTTP通信是...
本文将深入探讨三种常见的设计模式:Model-View-Controller(MVC)、Model-View-Presenter(MVP)和Model-View-ViewModel(MVVM)。这些模式在构建用户界面时起着至关重要的作用,尤其是在Web和移动应用开发中。 ...
Android MVP架构是一种设计模式,常用于构建复杂的Android应用程序,以提高代码的可维护性和可测试性。MVP是从传统的MVC(Model-View-Controller)模式演变而来的,针对Android应用开发的特点进行了优化。 在MVP...
在Android开发中,MVP(Model-View-Presenter)模式是一种常见的设计模式,用于提高代码的可测试性和组织性。MVP模式将应用程序分为三个主要组件:Model、View和Presenter。Model负责处理数据和业务逻辑,View负责...
Android Studio 3.6 中的界面设计工具发生了变化,现在提供了一个拆分视图,使您可以同时查看 UI 的“设计”视图和“代码”视图。要启用拆分视图,请单击编辑器窗口右上角的“拆分”图标。 资源管理器 资源管理器...
在Android开发中,静态变量(`static`)的使用是一个重要的议题,因为它涉及到应用程序的内存管理、生命周期以及可能引发的问题。...合理地设计和使用静态变量,结合Android的特性,才能确保应用的稳定性和性能。
- **上位机Android平台软件设计**:用于用户界面的显示和控制命令的发送。 #### 四、网络拓扑结构的选择 在ZigBee协议中,支持树状网络、星状网络和网状网络三种拓扑结构。考虑到家庭网络中设备数量较少和成本因素...