特此声明:本人正在学习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相关推荐

  1. Android架构师之路

    很多Android的小伙伴在做了多年的开发之后,始终搞不清楚达到Android架构师需要何种技能,我们对比着Android高级工程师来说明. 我们先来看一下Android高级工程师的招聘要求 职位描述 ...

  2. Android感应检测Sensor(简单介绍),Android架构师之路

    实现以下两个SensorEventListener方法来监听,并取得感应检测Sensor状态: //在感应检测到Sensor的精密度有变化时被调用到. public void onAccuracyCh ...

  3. android 链式结构,Android 架构师之路10 设计模式之责任链模式

    1. 责任链模式概念 1.1 介绍 客户端发出一个请求,链上的对象都有机会来处理这一请求,而客户端不需要知道谁是具体的处理对象.这样就实现了请求者和接受者之间的解耦,并且在客户端可以实现动态的组合职责 ...

  4. android架构师之路——修改app字体

    android自带的字体 通过 android:typeface="normal" 或者 android:fontFamily="monospace"两种方式来 ...

  5. Android从程序员到架构师之路3

    本文学习自高焕堂老师的Android从程序员到架构师之路系列教学视频 40 - 认识线程(Thread)模式a 1. 线程(Thread)概念 所谓线程(Thread) 是指一串连续的执行动作,以达成 ...

  6. python爬虫架构师之路_一位资深 架构师大牛给予Java技术提升的学习路线建议

    一位资深 架构师大牛给予Java技术提升的学习路线建议 对于工作多年的程序员而言,日后的职业发展无非是继续专精技术.转型管理和晋升架构师三种选择. 架构师在一家公司有多重要.优秀架构师需要具备怎样的素 ...

  7. 阿里Android架构师面试就这?我上我也行!

    一.牛*初现 刚踏进大学入门Android开发的时候,对架构师这个词并没有太多的概念,就觉得肯定很牛*,感觉只要随着时间的沉淀就必然会"进化"成架构师. 后来开始写代码,从Java ...

  8. 架构师之路-写的不错

    架构师之路 转:http://www.uml.org.cn/zjjs/200903273.asp 1.引言 机算机科学是一门应用科学,它的知识体系是典型的倒三角结构,所用的基础知识并不多,只是随着应用 ...

  9. 死磕原理!目前最全的Android架构师成长路线,技术详细介绍

    开头 眼看着金九银十就快来了,各大厂也开始了新一轮的招聘计划,尤其是腾讯前一段时间爆出了一个大消息: 将正式启动2021届秋季招聘,加大对数字经济和产业互联网人才的挖掘培养. 在本次招聘中,特别面向2 ...

  10. 吃一堑长一智!十年开发经验Android架构师,含小米、腾讯、阿里

    前言 最近有些朋友提问,Android QQ空间 换肤实现原理是什么?于是,我决定在这里做一下回答.对这个方面感兴趣的朋友也可以来看下. 手q的换肤机制主要是通过拦截系统resource中的sPrel ...

最新文章

  1. c# 实现自动搜索串口列表并刷新
  2. jittor和pytorch生成网络对比之wgan_div
  3. python3+selenium3登录封装与调用(把登陆做成公共模块)
  4. linux系统udp通信程序,Linux UDP socket编程(UDP通讯模型) | C/C++程序员之家
  5. ADO学习(八)源码示例
  6. lcfirst_PHP lcfirst()函数与示例
  7. linux read recv,read()/ recv()成功,但缓冲区未更改且为空
  8. autojs定时可以选定日期吗_微信怎么定时发送朋友圈——软件教程
  9. layuiajax提交表单控制层代码_Ninja Forms:免费的联系表单插件,却提供了付费表单才有的功能【视频+图文】...
  10. 【python】字符串的操作与方法、元组的定义与操作
  11. Python筛选法(算出十亿之内所有的质数之和)
  12. 【索引】联合索引的基本知识
  13. 25本免费的Python电子书
  14. wpf listview 大数据界面刷新
  15. Python截屏工具,识别屏幕中的二维码
  16. JSON必备工具之Json Viewer
  17. 数据挖掘与分析——关联规则模型
  18. webpack中development和production的理解
  19. 如何用纯CSS将图片填满div,自适应容器大小
  20. SQL Server 数据库备份还原和数据恢复

热门文章

  1. 【渝粤教育】国家开放大学2018年春季 0195-22T机械设计基础 参考试题
  2. [渝粤教育] 西南科技大学 经济法学 在线考试复习资料(1)
  3. 基于强化学习的倒立摆控制策略Matlab实现(附代码)
  4. springboot 项目maven 打包错误
  5. 【转】我是你的过客,你却是我的定格......
  6. 【转】Windows XP打印共享四大问题及解决方法
  7. [转]Microsoft SQL Server Management Studio Express 使用SQL验证登录sa
  8. OI树上问题 简单学习笔记
  9. 【bzoj 2541】 [Ctsc2000]冰原探险(BFS)
  10. Python MapReduce