特此声明:本人正在学习android架构知识,此些blog相当于自己的学习笔记,完全手工码字,部分内容借鉴于android研究员高焕堂高老师的ppt讲义,穿插个人领悟,出于弘扬程序员奉献精神,再此分享给感兴趣的朋友!
1.面向对象oop
oriented的含义:意味着一种信仰,object-oriented相信任何的软件都是有对象构成,
而不是Nothing else,由此可以得出总结:电脑语言的设计就简化了写程序只要定义class就可以了
2.Oriented-Based-Driven-Centered 之间的区别:
Based:--基于需求,有先后的顺序。例如先进行需求分析,然后基于需求分析的结果(文件)
而进行后续的软件开发活动,称为:Requirement-based software developer
俗称:打地基。
driven:“引导”,当在开发软件的时候,按照指定的模型去开发程序,以用户的使用为北极星,在不
违背用户需求的情况下开发系统。
centered:一切的软件开发的活动都是围绕这架构,就是像圣诞节的糖果和礼物一样都挂在圣诞树上
一样
对象(Object)
自然界中我们都认识的东西都是对象,而对于自己不认识的东西我们就理所当然的不认为是成为对象
,举个例子:李白自己写的诗文,他认为是对象,但是给他看一个外文诗的时候,他就不认为是对象
因为他根本不认识这个东西。
然后是。一旦我们认识了某样东西,我们就可以说出他的特点,并于别的对象做一个对比,其特点包
括:
1>对象之特征或者属性
2>对象之行为
例如:人有鼻子,胳膊,退等属性,会跑,跳等行为。
软件之对象(software Object)是有数据(Data)和函数(Function)组成。
类(Class)
是群体或者集合,而对象是类中的一份子,类是对象的集合。
类是一群具有共同重要属性的对象,类的定义就是说明这对象都具有什么的重要特性,软件中的对
象以数据来表达特性,以函数来表达行为,因此,类的定义就是说明软件中的对象,应包含数据和函数。
继承(extend)
对众多的对象加以分门别类,就形成了继承的的体系,衍生类=子类
子类继承基类(父类)子类和父类如同儿子和爸爸的关系,子类继承父类的所用属性和行为,并且子类还可以自己
定义属性(data)和行为(函数)。
表达组合:,扩充功能,和继承类似。
基类和子类的结构用途:比如轮胎和引擎的关系,引擎带动轮胎运作,彼此是组合关系
我们在此举个列子:
创建小线程:
main(){
Thread t = new Thread(new Task());//创建轮胎引擎
t.start();//启动引擎带动轮胎转动,拿到基类对象,通过接口调用子类的函数。
//t开启小线程去执行run()函数。
}
class Task implements Runnable{
public void run(){
system.err.println("hello world");
}
}
想要将轮胎和引擎结合起来,那么就必须给Thread(引擎)定义一个接口(Runnable),然后创建Task(轮胎)去实现这个接口,
接口(interface)=(卡榫函数)
基类和子类的结构:
所谓的卡榫(Hook)就是用来结合两个东西的接口,如果两个东西与不同的时间出现,那么一方
就会预留虚空,给予另一方未来时刻能以实体来填补该空间,两者虚实相依就密合起来,以此实现新陈代谢抽换自如(pnp)
变与不变的分离:是设计卡榫函数函数以及应用框架之基本原则和手艺
分离出变与不变部分之后,就可以将不变的部分写在父类别里,而变的部分写在子类别里
*在Java里,使用抽象(abstract)函数或可覆写(overridable)函数来实现卡榫函数
Ioc控制反转:
基类调用子类,主控权在基类上,
Ioc机制源自于oo语言(c++等)的类别继承体系,c++中基类的函数可以主动的调用子类的函数,这是经典的
ioc机制。
基类和子类之间,基类是主控权,通过Hook函数来调用子类
通常撰写基类在先,而子类在后,这种前辈拥有主导权,进而控制后背之情形,叫做“控制反转”
默认(Default)行为:基类的主要功能,提供预设值的默认行为,即函数,供子类调用
继承。
主动性vs被动型api:
UI = USER INTERFACE.
从基类的视角去区分主动和被动。
API:这是一个名词,但是他关联着三个动词:1.定义(define)2.实现(implement)3.呼叫(ioc)
可讲API分为“主动型”和“被动型”
接口(interface)是双方接触的地方,可以说是双方势力或者地盘的界线
谁拥有接口的制定权,谁就掌控着控制点,谁就能获得主动权,另一方为被动地位
通过图片便于理解以上知识: