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:从程序员到架构师之路Ⅲ_高焕堂的更多相关文章

  1. 高焕堂《android从程序员到架构师之路》 YY讲坛直面大师学习架构设计

    <android从程序员到架构师之路>YY讲坛活动:  sundy携手高焕堂老师全程YY答疑 与大师一起,分享android技术 时间:7月21日下午2:00   报名联系QQ:22243 ...

  2. Android:从程序员到架构师之路Ⅰ

    一般而言,人们大多先学开发(代码)的技术,随后才学(架构)设计的方法.然而,在实际做事时,却是先设计,随后才写出代码来.敏捷过程则让设计与写码迭代循环下去,一直到完成为止.在本课程里,就遵循敏捷的迭代 ...

  3. 一篇文章搞懂高级程序员、架构师、技术总监、CTO从薪资到技能的区别

    一篇文章搞懂高级程序员.架构师.技术总监.CTO从薪资到技能的区别 http://youzhixueyuan.com/senior-programmers-architects-technical-d ...

  4. Java程序员到架构师的推荐阅读书籍

    作为Java程序员来说,最痛苦的事情莫过于可以选择的范围太广,可以读的书太多,往往容易无所适从.我想就我自己读过的技术书籍中挑选出来一些,按照学习的先后顺序,推荐给大家,特别是那些想不断提高自己技术水 ...

  5. Java程序员进阶架构师推荐阅读书籍

    [IT168 技术]作为Java程序员来说,最痛苦的事情莫过于可以选择的范围太广,可以读的书太多,往往容易无所适从.我想就我自己读过的技术书籍中挑选出来一些,按照学习的先后顺序,推荐给大家,特别是那些 ...

  6. Java进阶之路——从初级程序员到架构师,从小工到专家

    原创文章 怎样学习才能从一名Java初级程序员成长为一名合格的架构师,或者说一名合格的架构师应该有怎样的技术知识体系,这是不仅一个刚刚踏入职场的初级程序员也是工作三五年之后开始迷茫的老程序员经常会问到 ...

  7. 问题集录--从初级java程序员到架构师,从小工到专家

    怎样学习才能从一名Java初级程序员成长为一名合格的架构师,或者说一名合格的架构师应该有怎样的技术知识体系,这是不仅一个刚刚踏入职场的初级程序员也是工作三五年之后开始迷茫的老程序员经常会问到的问题.希 ...

  8. 程序员、架构师、技术总监、CTO

    程序员 程序员,英文名coder/programmer,大家常自嘲叫码农的阶段.这个角色职责是把需求或产品实现为用户可用的软件产品. 此职位为执行级别.另外因为经验较少,一般需要求助别人,或与别人一起 ...

  9. 程序员Java架构师多线程面试题和回答解析

    当我们在Java架构师面试的过程中常见的多线程和并发方面的问题肯定是必不可少的一部分.那么在面试之前我们更应该多准备一些关于多线程方面的问题. 面试官只是想确信面试者有足够的Java线程与并发方面的知 ...

随机推荐

  1. OLAP、OLTP的介绍和比较

    OLTP与OLAP的介绍 数据处理大致可以分成两大类:联机事务处理OLTP(on-line transaction processing).联机分析处理OLAP(On-Line Analytical ...

  2. acdream B - 郭式树 (水题 卡cin,cout, 卡LL)

    题目 输入正好是long long的最大, 但是答案超long long 所以用unsigned, 不能用cin cout否则一定超时: 不能用abs(), abs 只用于整数. unsigned   ...

  3. Java注解实践

    Java注解实践 标签 : Java基础 注解对代码的语意没有直接影响, 他们只负责提供信息给相关的程序使用. 注解永远不会改变被注解代码的含义, 但可以通过工具对被注解的代码进行特殊处理. JDK ...

  4. IIS没有ASP.NET选项卡

    问题: 1.IIS没有ASP.NET选项卡 2.默认文档不起作用 分析: 1,在安装了.net framework 2.0后,iis站点属性里才会有asp.net的选项. 2,安装asp.net2.0 ...

  5. [swustoj 1023] Escape

    Escape     Description BH is in a maze,the maze is a matrix,he wants to escape! Input The input cons ...

  6. Swift入门篇-swift简介

    潜水博客园很多年,闲来无事,聊一下自己的经历,语文不好(如有什么错别字,请您在下评论)望您谅解,没有上过什么学的 在前期 ios入门篇 -hello Word(1) 文章中介绍我这半年准备写一些ios ...

  7. h264检测是I帧还是P帧,解决录像第一帧有马赛克问题

    最近使用h264码流数据进行录像,但是录出来的第一帧有马赛克,究其原因是录像的第一帧不是关键帧,所以需要录像是需要判断第一帧是否是关键帧,方法有两种,第一种是原码流的基础上查找,第二种是将原码流传递给 ...

  8. ms_sql:drop and create a job

    /****** Object: Job [syncData_23_00] Script Date: 09/30/2013 16:48:32 ******/ ) IF EXISTS (SELECT jo ...

  9. JAVA数据库处理(连接,数据查询,结果集返回)

    package john import java.io.IOException; import java.util.*; public class QueryDataRow { public Hash ...

  10. 利用ioctl()获取无线速率

    其实对于自己装了网卡驱动的来说,应该从最根本的驱动中获取速率. 但是用ioctl()也可以,其实实现和iwconfig命令相同. 仅仅获取速率这部分: #include <stdio.h> ...