Design Pattern in Android Sdk Source Code

參考鏈接

http://www.cnblogs.com/qianxudetianxia/tag/Android%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F%E7%B3%BB%E5%88%97/


一,組合模式

View + ViewPager


二,觀察者模式

AbstractCursor


三,單例模式

輸入法(InputMethodManager) 狀態欄等


四,模板方法模式

View中的方法 onDraw() dispatchDraw()

public class View{
protected void onDraw(Canvas canvas) {
}
protected void dispatchDraw(Canvas canvas) {
}
//算法骨架
public void draw(Canvas canvas) {
   if (!verticalEdges && !horizontalEdges) {
        // 步驟1
        if (!dirtyOpaque) onDraw(canvas);
        // 步驟2
        dispatchDraw(canvas);
        // 步驟3
        onDrawScrollBars(canvas);
        return;
    }
}
//... ...

五,備忘錄模式

Canvas save() restore()方法


六,共享元模式

sqlite 請求sql,對於重複的sql的返回結果,會緩存。

客戶端通過享元工廠獲取享元對象,享元對象的創建則根據工廠的享元池來控制,如果有享元池中沒有這個對象,則創建這個對象並保存到享元池中,如果享元池中有這個對象,則直接使用這個對象。因爲享元對象在共享的同時,說明它重用屬性的不變性,不然都是變化的東西,不存在共享,這些不變得屬性我們稱之爲內部狀態,獨立與外部場景。


七,命令模式

封裝了接受者和操作

new Thread(new Runnable(){}).start()


八,工廠模式

Asynctask中的ThreadFactory

private static final ThreadFactory sThreadFactory = new ThreadFactory() {
 private final AtomicInteger mCount = new AtomicInteger(1);
 public Thread newThread(Runnable r) {
        return new Thread(r, "AsyncTask #" + mCount.getAndIncrement());
   }
};


九,適配器模式

adapter


十,原型模式

Cloneable接口


十一,策略模式

暫時理解爲多態的內涵


十二,建造者模式

builder


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章