Android架构师之路-oop
特此声明:本人正在学习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)是双方接触的地方,可以说是双方势力或者地盘的界线
谁拥有接口的制定权,谁就掌控着控制点,谁就能获得主动权,另一方为被动地位
通过图片便于理解以上知识:
转载于:https://www.cnblogs.com/dandre/p/4507011.html
Android架构师之路-oop相关推荐
- Android架构师之路
很多Android的小伙伴在做了多年的开发之后,始终搞不清楚达到Android架构师需要何种技能,我们对比着Android高级工程师来说明. 我们先来看一下Android高级工程师的招聘要求 职位描述 ...
- Android感应检测Sensor(简单介绍),Android架构师之路
实现以下两个SensorEventListener方法来监听,并取得感应检测Sensor状态: //在感应检测到Sensor的精密度有变化时被调用到. public void onAccuracyCh ...
- android 链式结构,Android 架构师之路10 设计模式之责任链模式
1. 责任链模式概念 1.1 介绍 客户端发出一个请求,链上的对象都有机会来处理这一请求,而客户端不需要知道谁是具体的处理对象.这样就实现了请求者和接受者之间的解耦,并且在客户端可以实现动态的组合职责 ...
- android架构师之路——修改app字体
android自带的字体 通过 android:typeface="normal" 或者 android:fontFamily="monospace"两种方式来 ...
- Android从程序员到架构师之路3
本文学习自高焕堂老师的Android从程序员到架构师之路系列教学视频 40 - 认识线程(Thread)模式a 1. 线程(Thread)概念 所谓线程(Thread) 是指一串连续的执行动作,以达成 ...
- python爬虫架构师之路_一位资深 架构师大牛给予Java技术提升的学习路线建议
一位资深 架构师大牛给予Java技术提升的学习路线建议 对于工作多年的程序员而言,日后的职业发展无非是继续专精技术.转型管理和晋升架构师三种选择. 架构师在一家公司有多重要.优秀架构师需要具备怎样的素 ...
- 阿里Android架构师面试就这?我上我也行!
一.牛*初现 刚踏进大学入门Android开发的时候,对架构师这个词并没有太多的概念,就觉得肯定很牛*,感觉只要随着时间的沉淀就必然会"进化"成架构师. 后来开始写代码,从Java ...
- 架构师之路-写的不错
架构师之路 转:http://www.uml.org.cn/zjjs/200903273.asp 1.引言 机算机科学是一门应用科学,它的知识体系是典型的倒三角结构,所用的基础知识并不多,只是随着应用 ...
- 死磕原理!目前最全的Android架构师成长路线,技术详细介绍
开头 眼看着金九银十就快来了,各大厂也开始了新一轮的招聘计划,尤其是腾讯前一段时间爆出了一个大消息: 将正式启动2021届秋季招聘,加大对数字经济和产业互联网人才的挖掘培养. 在本次招聘中,特别面向2 ...
- 吃一堑长一智!十年开发经验Android架构师,含小米、腾讯、阿里
前言 最近有些朋友提问,Android QQ空间 换肤实现原理是什么?于是,我决定在这里做一下回答.对这个方面感兴趣的朋友也可以来看下. 手q的换肤机制主要是通过拦截系统resource中的sPrel ...
最新文章
- c# 实现自动搜索串口列表并刷新
- jittor和pytorch生成网络对比之wgan_div
- python3+selenium3登录封装与调用(把登陆做成公共模块)
- linux系统udp通信程序,Linux UDP socket编程(UDP通讯模型) | C/C++程序员之家
- ADO学习(八)源码示例
- lcfirst_PHP lcfirst()函数与示例
- linux read recv,read()/ recv()成功,但缓冲区未更改且为空
- autojs定时可以选定日期吗_微信怎么定时发送朋友圈——软件教程
- layuiajax提交表单控制层代码_Ninja Forms:免费的联系表单插件,却提供了付费表单才有的功能【视频+图文】...
- 【python】字符串的操作与方法、元组的定义与操作
- Python筛选法(算出十亿之内所有的质数之和)
- 【索引】联合索引的基本知识
- 25本免费的Python电子书
- wpf listview 大数据界面刷新
- Python截屏工具,识别屏幕中的二维码
- JSON必备工具之Json Viewer
- 数据挖掘与分析——关联规则模型
- webpack中development和production的理解
- 如何用纯CSS将图片填满div,自适应容器大小
- SQL Server 数据库备份还原和数据恢复
热门文章
- 【渝粤教育】国家开放大学2018年春季 0195-22T机械设计基础 参考试题
- [渝粤教育] 西南科技大学 经济法学 在线考试复习资料(1)
- 基于强化学习的倒立摆控制策略Matlab实现(附代码)
- springboot 项目maven 打包错误
- 【转】我是你的过客,你却是我的定格......
- 【转】Windows XP打印共享四大问题及解决方法
- [转]Microsoft SQL Server Management Studio Express 使用SQL验证登录sa
- OI树上问题 简单学习笔记
- 【bzoj 2541】 [Ctsc2000]冰原探险(BFS)
- Python MapReduce