Android:从程序员到架构师之路Ⅲ_高焕堂
Part-2: 从Android框架代码中学习设计
一 基础设计模式(Pattern)的代码:以Android为例
1、Template Method模式:IoC(控制反转)机制
2、Observer模式:接口设计
3、Abstract Factory模式:两个EIT造形的组合
4、Adapter模式:封装接口
5、Composite模式:实践组合
6、Façade模式:组合体的接口设计
7、EIT造形是原子,设计模式是分子
8、更多EIT造形的组合模式:以Android代码为例
二 从 UI框架入手
1、View体系的架构设计(使用Template Method模式)
2、Activity-View的架构设计(使用Factory模式)
3、Layout-View的架构设计(使用Composite模式)
4、WMS(WindowManagerService)-View的架构设计
5、WMS-SurfaceFlinger的架构设计
6、Surface-Canvas(画布)的架构设计
7、SurfaceView与OpenGL的3D绘图架构设计
8、ListView框架的设计
三 跨进程(IPC)架构设计
1、Android 的IPC幕后设计:BD(Binder Driver)驱动架构
2、以IBinder接口包装BD驱动的服务
3、包装IBinder接口的Proxy-Stub设计模式
4、Proxy和Stub类别的代码
5、设计Proxy和Stub类别的API
6、如何自动生成Proxy和Stub类别代码
7、IBinder & AIDL方法
方法(一):Implementing a Binder
方法(二):Using a Messenger
方法(三):Bound Services
四 Java与C/C++两层框架的设计
1、JNI(Java Native Interface)代码开发要点
2、JNI的数据型态(Data Type)转换规则
3、JNI的线程(Thread)模式:JNIENV类的设计
4、正向通信:Java函数调用本地C函数
5、反向通信:本地C函数调用Java函数
6、Android HAL架构设计
HAL(Hardware Abstraction Layer)的意义
理解runtime与HAL Stub
撰写HAL Stub代码
Stub调用Linux Kernel的方法
五 核心服务的框架设计
1、认识核心服务(Core Service)
核心服务都是在开机过程中,由Android的INIT进程启动的
包括Android Service和 Native Service两种
以Java语言撰写的,就称为Android Service
以C++撰写的,就称为Native Service
2、亲自撰写一个核心服务
撰写一个C++类别
继承BBinder基类,继承得来IBinder界面
提供接口给Java层(透过JNI)调用
六 JUnit测试框架的设计
1、Android的测试工具,都是基于JUnit测试框架的
2、JUnit框架也是由许多EIT造形所组成;其TestCase基类是<E&I>
3、从基类衍生出各子类,如ServiceTestCase就是扩充的<E&I>;其内涵的setUP()和tearDown()函数就是<I>
4、可撰写<T>(即Test case)代码,来启动TDD机制
5、可使用TestSuite基类来管理一群相关的<T>(即Test case)
网盘部分视频分享:http://pan.baidu.com/share/link?uk=1882162285&shareid=2210518229
Android:从程序员到架构师之路Ⅲ_高焕堂的更多相关文章
- 高焕堂《android从程序员到架构师之路》 YY讲坛直面大师学习架构设计
<android从程序员到架构师之路>YY讲坛活动: sundy携手高焕堂老师全程YY答疑 与大师一起,分享android技术 时间:7月21日下午2:00 报名联系QQ:22243 ...
- Android:从程序员到架构师之路Ⅰ
一般而言,人们大多先学开发(代码)的技术,随后才学(架构)设计的方法.然而,在实际做事时,却是先设计,随后才写出代码来.敏捷过程则让设计与写码迭代循环下去,一直到完成为止.在本课程里,就遵循敏捷的迭代 ...
- 一篇文章搞懂高级程序员、架构师、技术总监、CTO从薪资到技能的区别
一篇文章搞懂高级程序员.架构师.技术总监.CTO从薪资到技能的区别 http://youzhixueyuan.com/senior-programmers-architects-technical-d ...
- Java程序员到架构师的推荐阅读书籍
作为Java程序员来说,最痛苦的事情莫过于可以选择的范围太广,可以读的书太多,往往容易无所适从.我想就我自己读过的技术书籍中挑选出来一些,按照学习的先后顺序,推荐给大家,特别是那些想不断提高自己技术水 ...
- Java程序员进阶架构师推荐阅读书籍
[IT168 技术]作为Java程序员来说,最痛苦的事情莫过于可以选择的范围太广,可以读的书太多,往往容易无所适从.我想就我自己读过的技术书籍中挑选出来一些,按照学习的先后顺序,推荐给大家,特别是那些 ...
- Java进阶之路——从初级程序员到架构师,从小工到专家
原创文章 怎样学习才能从一名Java初级程序员成长为一名合格的架构师,或者说一名合格的架构师应该有怎样的技术知识体系,这是不仅一个刚刚踏入职场的初级程序员也是工作三五年之后开始迷茫的老程序员经常会问到 ...
- 问题集录--从初级java程序员到架构师,从小工到专家
怎样学习才能从一名Java初级程序员成长为一名合格的架构师,或者说一名合格的架构师应该有怎样的技术知识体系,这是不仅一个刚刚踏入职场的初级程序员也是工作三五年之后开始迷茫的老程序员经常会问到的问题.希 ...
- 程序员、架构师、技术总监、CTO
程序员 程序员,英文名coder/programmer,大家常自嘲叫码农的阶段.这个角色职责是把需求或产品实现为用户可用的软件产品. 此职位为执行级别.另外因为经验较少,一般需要求助别人,或与别人一起 ...
- 程序员Java架构师多线程面试题和回答解析
当我们在Java架构师面试的过程中常见的多线程和并发方面的问题肯定是必不可少的一部分.那么在面试之前我们更应该多准备一些关于多线程方面的问题. 面试官只是想确信面试者有足够的Java线程与并发方面的知 ...
随机推荐
- oracle索引,索引的建立、修改、删除
索引,索引的建立.修改.删除 2007-10-05 13:29 来源: 作者: 网友评论 0 条 浏览次数 2986 索引索引是关系数据库中用于存放每一条记录的一种对象,主要目的是加快数据的读取速度和 ...
- Awesome Javascript(中文翻译版)
[导读]:GitHub 上有一个 Awesome – XXX 系列的资源整理.awesome-javascript 是 sorrycc 发起维护的 JS 资源列表,内容包括:包管理器.加载器.测试框架 ...
- POJ 1113 凸包模板题
上模板. #include <cstdio> #include <cstring> #include <iostream> #include <algorit ...
- Qt之QTableView添加复选框(QAbstractItemDelegate)
简述 上节分享了使用自定义模型QAbstractTableModel来实现复选框.下面我们来介绍另外一种方式: 自定义委托-QAbstractItemDelegate. 简述 效果 QAbstract ...
- java 错误:找不到或无法加载主类的解决办法
此类错误的常见解决办法: 1.是因为.java文件不在项目的src路径内,也就是说源代码未被eclipse编译,字节码不存在无法运行了在项目名上右键 -> Builder Path -> ...
- zoj 1119 /poj 1523 SPF
题目描述:考虑图8.9中的两个网络,假定网络中的数据只在有线路直接连接的2个结点之间以点对点的方式传输.一个结点出现故障,比如图(a)所示的网络中结点3出现故障,将会阻止其他某些结点之间的通信.结点1 ...
- poj 1780 Code
//题目描述:KEY公司开发出一种新的保险箱.要打开保险箱,不需要钥匙,但需要输入一个正确的.由n位数字组成的编码.这种保险箱有几种类型,从给小孩子玩的玩具(2位数字编码)到军用型的保险箱(6位数字编 ...
- AFNetworking教程
转:http://www.lanrenios.com/tutorials/network/2012/1126/527.html AFNETWORKING AFNetworking他是一个现在非常用得多 ...
- Android -- Support包特性
干货 每一个 Support 包版本后缀 vX 所代表的含义是他能够被使用的最低版本等级.之所以无法在更低版本进行使用的原因,是因为随着版本的升级,在新版本中有很多之前不支持的特性或者 API,因此如 ...
- Chrome 实用调试技巧
Chrome 实用调试技巧 2016-07-23 如今Chrome浏览器无疑是最受前端青睐的工具,原因除了界面简洁.大量的应用插件,良好的代码规范支持.强大的V8解释器之外,还因为Chrome开发者工 ...