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)

發佈留言