Android開發中常見的設計模式 MD

Markdown版本筆記 個人GitHub首頁 個人博客 個人微信 個人郵箱
MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina.com

目錄

值得收藏的一些文章html

---------- 建立型模式 - 6個 ----------

- 單例模式

懶漢式、餓漢式、靜態內部類、雙重鎖檢查、枚舉java

- 建造者模式

最明顯的標誌就是使用Build類
AlterDialog、Notification
各大開源框架普遍使用 Gson、Okhttpandroid

- 原型模式

更快的獲取到一個相同屬性的對象
Intent、OkHttpClientgit

- 工廠模式3個

簡單工廠(靜態工廠)、工廠方法、抽象工廠
BitmapFactory、MediaPlayerFactory、Executors線程池工廠類程序員

---------- 行爲型模式 - 11個 ----------

- 策略模式

封裝算法
出行策略:公交車、的士、自駕策略下的費用、時間計算等
插值器、估值器、緩存策略,增刪改查策略github

- 觀察者模式

監聽器、點擊事件、滾動事件
rxjava、eventbus、廣播
架構組件Livedata正則表達式

- 模板方法模式

定義算法的骨架、結構、流程,細節由子類實現
Activity生命週期
BaseFragment裏面定義的getLayout、initView、懶加載onLazyLoad算法

- 責任鏈模式

須要指定處理鏈,屏蔽了請求的處理過程,客戶端不須要知道請求會被哪些對象處理
事件分發機制、有序廣播、審批流程
ClassLoader的雙親委託模型設計模式

- 備忘錄模式

捕獲一個對象的內部狀態,並在該對象以外保存,以便須要時恢復到原先保存的狀態
Activity的onSaveInstanceState,保存Bundle類型的savedInstanceState,當Activity重建時能夠恢復狀態數組

- 命令模式

未來自客戶端的請求封裝爲一個獨立的對象,將行爲請求者與行爲實現者解耦,能夠實現對請求進行排隊、撤消、記錄請求日誌等
Handler機制,Runnable、Callable等接口的設計
廣播、eventbus

解釋器模式

正則表達式Pattern
時間格式化Format、Html格式化、Integer.parseInt解析、SQL解析
解釋加減乘除、或與非

迭代器模式

把對容器中包含對象的訪問委讓給外部類,使用Iterator按順序進行遍歷訪問
好比至少提供hasNext()和next()方法
全部的集合都有 Iterator iterator() 方法

狀態模式

根據內部的狀態動態的選擇行爲;狀態改變的時候會改變其行爲;狀態改變的時候其行爲也隨之改變
把所研究的對象的行爲包裝在不一樣的狀態對象裏
登陸狀態、未登陸狀態下用戶的行爲

中介者模式

房屋中介
將網狀結構轉化成星型結構,能夠避免同事類之間的過分耦合
同事對象只知道中介者而不知道其餘同事對象,同事類之間必須經過中介者才能進行消息傳遞

訪問者模式

相對比較複雜的一個,項目中可能見得很是少。
把數據結構和做用於結構上的操做解耦合,適用於數據結構穩定、算法易變的系統
案例:領導(CEO、CTO、Leader)對員工(程序員、產品、測試)進行考覈

---------- 結構型模式 - 7個 ----------

- 裝飾器模式

擴展功能,相比於繼承基類來擴展功能,使用裝飾器模式更加的靈活
解決類膨脹、類爆炸、繼承體系臃腫的問題
Context和它的包裝類ContextWrapper(其實並無加強功能)
IO流中的BufferReader

- 組合模式

View和ViewGroup的組合、文件結構File
集合List的add和addAll
樹、遞歸、葉子結點

- 代理模式

AIDL、Binder
靜態代理、動態代理
Proxy、Cglib
ActivityManagerProxy代理ActivityManagerService

- 適配器模式

listview、recycleview、ViewPage
流類型轉換InputStreamReader、OutputStreamWriter
集合和數組類型轉換 Arrays.asList()

- 門面模式

醫院的接待、功能的封裝(工具類)
Context與ContextImpl

- 亨元模式

String常量池、Integer、Message常量池
享元對象能作到共享的關鍵是區份內部狀態和外部狀態
通常須要用到單例模式、工廠模式、HashMap
下降內存中對象的數量,節省內存,但使系統將變得複雜,且在讀取外部狀態時耗時增長

橋接模式

車的輪胎,人的衣服
業務抽象角色引用業務實現角色,業務抽象角色的部分實現是由業務實現角色完成的
將一個系統的抽象部分和實現部分分離,使它們均可以獨立地進行變化
Window 與 WindowManager、應用層與Native層之間的交互

2019-4-1

相關文章
相關標籤/搜索