面向對象六大原則
- 單一職責原則:一個類中應該是一組相關性很高的函數、數據的封裝。
- 開閉原則:對修改關閉,對拓展關閉。
- 里氏替換原則:所有引用基類的地方必須能透明得使用其子類的對象。即子類就可以替換父類出現。
- 依賴倒置原則:依賴高層抽象,不能依賴底層實現。
- 接口隔離原則:將接口拆分成更具體的接口,根據不同需求建立依賴。
- 迪米特原則:即最小知識原則。一個類應該與和它關系最直接的類建立連接。
設計模式在Android源碼中的實現
-
單例模式
最優實現:靜態內部類方式、枚舉方式、容器方式源碼:Context.getSystemSerivce()采用了容器方式實現單例模式將service通過鍵值對的方式存在HashMap中。
-
Builder模式
將一個復雜的對象的構建與表示分離,使得同樣的構建過程可以創建不同的表示。
源碼:AlertDialog、OkHttp
-
原型模式
clone()
源碼:ArrayList
- 工廠方法模式
源碼:Iterable
抽象工廠
策略模式:
源碼:屬性動畫插值器
- 狀態模式:
源碼:WiFiSetting
- 責任鏈模式:
源碼:view事件分發
- 解釋器模式:
源碼:PackageManagerService(app掃描)
- 命令模式:
源碼:InputDispatcher事件輸入
- 觀察者模式:
源碼:notifyDataSetChange、Rxjava
- 備忘錄模式:
源碼:onSaveInstanceState
- 迭代器模式:
源碼:List、Map、Curso
- 模板方法模式:
源碼:AsyncTask
- 訪問者模式:
源碼:APT(注解)
- 中介者模式:
源碼:Keyguard鎖屏
- 代理模式:
源碼:Binder
- 組合模式:
源碼:View、ViewGroup
- 適配器模式:
源碼:Adapter
- 裝飾器模式:
源碼:ContextWrapper
- 享元模式:
源碼:Message
- 外觀模式:
源碼:context、ContextImpl
- 橋接模式:
源碼:WindowManagerService