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)