天天看點

《Android源碼設計模式解析與實戰》一、ImageLoader圖檔加載的設計

一、作者一開始的設計思路是:

1、初始化記憶體大小MemoryCache

2、下載下傳圖檔完成後将圖檔放入LruCache(當存儲Image的大小大于LruCache設定的值,系統自動釋放記憶體)中

3、顯示圖檔

二、面向對象六大原則-單一職責原則(單一職責原則就是指一個類或者子產品應該有且隻有一個改變的原因。)

将初始化記憶體的MemoryCache 分離出來,專注于記憶體緩存,ImageLoader擷取圖檔的時候先從MemoryCache裡面取,如果沒有再下載下傳圖檔,下載下傳完畢放入MemoryCache

三、面向對象六大原則-開閉原則(子產品的行為是可以擴充的,對子產品行為進行擴充時,不必改動子產品的源代碼或者二進制代碼)

1、建立DiskCache硬碟緩存,路徑為SDCard

2、建立DoubleCache雙緩存,擷取圖檔先從MemoryCache擷取,沒有再從DiskCache擷取,再沒有就下載下傳,下載下傳完畢之後同時放入ImageCache和DiskCache

3、修改ImageLoader,讓使用者自主選擇ImageCache或者DiskCache或者DoubleCache或者是自定義的ImageCache

根據這個思想我需要改進一下消息推送的Receiver

消息推送分為通知欄推送,競價推送,競價結果推送,搶單推送,注冊稽核推送等

建立IXXXReceiver接口,抽象方法為showNotification,Receiver實作該接口,傳入conten,title,type等參數

建立IDealMessage接口,抽象方法為dealMessage,各個推送處理方法實作該接口,傳人type,json和IXXXReceiver對象。

根據推送的result值來判斷選擇使用哪一個IDealMessage對象,執行完畢調用Receiver的showNotification方法顯示通知欄

其特點類似Mvp設計模式,很多地方都可以用到,特别是同一個對象可以有多種處理方式的時候