面向?qū)ο罅笤瓌t
- 單一職責(zé)原則:一個類中應(yīng)該是一組相關(guān)性很高的函數(shù)、數(shù)據(jù)的封裝瞒窒。
- 開閉原則:對修改關(guān)閉羹膳,對拓展關(guān)閉。
- 里氏替換原則:所有引用基類的地方必須能透明得使用其子類的對象根竿。即子類就可以替換父類出現(xiàn)陵像。
- 依賴倒置原則:依賴高層抽象,不能依賴底層實現(xiàn)寇壳。
- 接口隔離原則:將接口拆分成更具體的接口醒颖,根據(jù)不同需求建立依賴。
- 迪米特原則:即最小知識原則壳炎。一個類應(yīng)該與和它關(guān)系最直接的類建立連接泞歉。
設(shè)計模式在Android源碼中的實現(xiàn)
-
單例模式
最優(yōu)實現(xiàn):靜態(tài)內(nèi)部類方式逼侦、枚舉方式、容器方式源碼:Context.getSystemSerivce()采用了容器方式實現(xiàn)單例模式將service通過鍵值對的方式存在HashMap中腰耙。
-
Builder模式
將一個復(fù)雜的對象的構(gòu)建與表示分離榛丢,使得同樣的構(gòu)建過程可以創(chuàng)建不同的表示。
源碼:AlertDialog挺庞、OkHttp
-
原型模式
clone()
源碼:ArrayList
- 工廠方法模式
源碼:Iterable
抽象工廠
策略模式:
源碼:屬性動畫插值器
- 狀態(tài)模式:
源碼:WiFiSetting
- 責(zé)任鏈模式:
源碼:view事件分發(fā)
- 解釋器模式:
源碼:PackageManagerService(app掃描)
- 命令模式:
源碼:InputDispatcher事件輸入
- 觀察者模式:
源碼:notifyDataSetChange晰赞、Rxjava
- 備忘錄模式:
源碼:onSaveInstanceState
- 迭代器模式:
源碼:List、Map选侨、Curso
- 模板方法模式:
源碼:AsyncTask
- 訪問者模式:
源碼:APT(注解)
- 中介者模式:
源碼:Keyguard鎖屏
- 代理模式:
源碼:Binder
- 組合模式:
源碼:View掖鱼、ViewGroup
- 適配器模式:
源碼:Adapter
- 裝飾器模式:
源碼:ContextWrapper
- 享元模式:
源碼:Message
- 外觀模式:
源碼:context、ContextImpl
- 橋接模式:
源碼:WindowManagerService