參考鏈接:
一,組合模式
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