天天看點

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

Markdown版本筆記 我的GitHub首頁 我的部落格 我的微信 我的郵箱
MyAndroidBlogs baiqiantao bqt20094 [email protected]

目錄

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

- 單例模式

- 建造者模式

- 原型模式

- 工廠模式3個

---------- 行為型模式 - 11個 ----------

- 政策模式

- 觀察者模式

- 模闆方法模式

- 責任鍊模式

- 備忘錄模式

- 指令模式

解釋器模式

疊代器模式

狀态模式

中介者模式

通路者模式

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

- 裝飾器模式

- 組合模式

- 代理模式

- 擴充卡模式

- 門面模式

- 亨元模式

橋接模式

值得收藏的一些文章

  • 一篇超實用部落格:Android開發中常見的設計模式
  • 四月葡萄的系列文章
  • xxq2dream的系列文章
  • Android設計模式之23種設計模式一覽
  • Android設計模式簡單了解
  • android源碼中的設計模式

懶漢式、餓漢式、靜态内部類、雙重鎖檢查、枚舉

最明顯的标志就是使用Build類

AlterDialog、Notification

各大開源架構廣泛使用 Gson、Okhttp

更快的擷取到一個相同屬性的對象

Intent、OkHttpClient

簡單工廠(靜态工廠)、工廠方法、抽象工廠

BitmapFactory、MediaPlayerFactory、Executors線程池工廠類

封裝算法

出行政策:公共汽車、的士、自駕政策下的費用、時間計算等

插值器、估值器、緩存政策,增删改查政策

監聽器、點選事件、滾動事件

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)對員工(程式員、産品、測試)進行考核

擴充功能,相比于繼承基類來擴充功能,使用裝飾器模式更加的靈活

解決類膨脹、類爆炸、繼承體系臃腫的問題

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

本文來自部落格園,作者:白乾濤,轉載請注明原文連結:https://www.cnblogs.com/baiqiantao/p/10660659.html

繼續閱讀