最近在继续iPhone业务的同时还需要重新拾起Android。在有些生疏的情况下,决定从Android源码中感悟一些Android的风格和方式。在学习源码的过程中也发现了一些通用的模式,希望通过一个系列的文章总结和分享下。
    模板模式定义一个操作中算法的骨架,将一些步骤的执行延迟到其子类中。Android中的Activity、View等等都利用了模板模式。以AdapterView为例,所实现的模板模式的类图如下:
clip_image001
其中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();
    }
    ......
}