1.理解两个概念 抽象和衍生

抽象:从相似的事物中,抽取出共同点,得到相似的结构

衍生:以抽象结构为基础,添加些其他功能,得到具体的事物。

2. 系统OS,框架,应用程序,用户之间的关系

Android 框架 ui android 框架原理_未定义

用户操作一个软件的时候,其实中间还隔了一层,那就是系统,例如,用户点击了屏幕上的一个按钮,就会对屏幕产生物理感应,屏幕将这种物理感应交给系统os处理,系统产生相应的事件对象,交给框架处理,框架交给相应的程序,进行相应的处理,然后逆向的将对事件的动作反映在屏幕上。

应用程序是由框架进行管理的,例如Android上,activity的存储,程序的打开,结束,等等都是有框架进行管理的。

看一个现实中的例子:

Android 框架 ui android 框架原理_未定义_02

店员就相当于os系统,经理相当于框架,店员直接与客人进行沟通,一般的事情自己就解决了,除非遇到自己不能解决的问题,就去请示经理,有经理决定,在这张图中,与客户互动的细节几乎都有店员处理掉了这样经理就变得很轻松,os与框架之间的关系也可以概括框架和应用程序之间的关系,

Android 框架 ui android 框架原理_应用程序_03

 

有了经理这个框架,应用程序就变得简单了。

3. 框架的特征

3.1 框架里的函数能够呼叫应用程序之中的函数,通俗的讲是前辈呼叫晚辈,框架先于程序诞生,称之为前辈。程序在框架的基础上诞生,所以称为晚辈。前辈呼叫晚辈,会产生下述几种效果

      3.1.1 框架里要定义很多的预设函数,工应用程序调用或者重写

      3.2.2 程序员的主要作用就是设计各种函数供框架来调用

      3.3.3 如果应用程序中修改或者取代了预设函数,框架就会去调用程序中的函数,反之会去调用预设函数。

3.2 应用框架的典型双向沟通情形

       Android 框架 ui android 框架原理_事件对象_04

1. 框架中预设了f1(),程序中也定义了f1()。此时优先呼叫晚辈的f1()函数。
2. 框架「虚」设了f2(),亦即f2()是个抽象(abstract)函数。此时您务必
     定义f2()來充实之,并供Linux/Windows 或其它函数呼叫。例如f3()呼叫f2()。
3. 框架预设了f3(),程序并未定义f3()。此时呼叫预设的f3()函数。
4. 框架预设了f4(),您也定义了f4()。此时优先呼叫f4()函数,而f4()可呼叫前辈(预设)的f4()函数。

 

总结:从上图可以看到,框架和应用程序之间,主动权掌握在框剪手里,框架决定如何呼叫应用程序中的函数。