最近在繼續iPhone
業務的同時還須要從新拾起Android
。在有些生疏的狀況下,決定從Android
源碼中感悟一些Android
的風格和方式。在學習源碼的過程當中也發現了一些通用的模式,但願經過一個系列的文章總結和分享下。
模板模式定義一個操做中算法的骨架,將一些步驟的執行延遲到其子類中。Android中的Activity、View等等都利用了模板模式。以AdapterView爲例,所實現的模板模式的類圖以下:
其中AdapterView經過getAdapter()、setAdapter(T adapter)、addView(View child)和onLayout()等方法將一部分具體邏輯延遲到各個子類實現。代碼以下:
public abstract class AdapterView<T extends Adapter> extends ViewGroup { ...... public abstract T getAdapter(); public abstract void setAdapter(T adapter); @Override public void addView(View child) { throw new UnsupportedOperationException("addView(View) is not supported in AdapterView"); } @Override protected void onLayout(boolean changed, int left, int top, int right, int bottom) { mLayoutHeight = getHeight(); } ...... }