原创 徹底理解Android中的ThreadLocal

一、概念 ThreadLocal是一個線程內部的數據存儲類,通過它可以在指定的線程中存儲數據,數據存儲以後,只有在指定的線程中纔可以訪問,其他線程則無法獲取。 二、使用場景 1、當某些數據是以線程爲作用域且不同線程之間具有不同數據副本

原创 設計模式—外觀模式

定義 要求一個子系統的外部與其內部的通信必須通過一個統一的接口對象進行。該模式提供一個高層次的接口,使得子系統更容易使用。 使用場景 爲一個複雜子系統提供一個統一的簡單接口。子系統往往因爲不斷演化而變得越來越複雜,甚至可能被替換。大多

原创 設計模式—代理模式

定義 爲其他對象提供一種代理以控制對這個對象的訪問 使用場景 當無法或不想直接訪問某個對象或者訪問某個對象存在困難時可以通過一個代理對象來間接訪問,爲了保證客戶端使用的透明性,委託對象與代理對象需要實現相同的接口 關鍵點 一個抽象角色

原创 一篇文章徹底理解SharedPreferences

一、概述 SharedPreferences簡稱Sp(後面都會稱Sp),是一種輕量級的數據存儲方式,採用Key/value的方式 進行映射,最終會在手機的/data/data/package_name/shared_prefs/目錄

原创 設計模式—觀察者模式

定義 定義對象間一種一對多的依賴關係,使得每當一個對象狀態改變時,所有依賴於它的對象都會得到通知並被自動跟新 使用場景 關聯行爲場景,需要注意的是關聯行爲是可拆分的,而不是組合關係 事件多級觸發場景 跨系統的消息交換場景,如消息隊列、

原创 設計模式—備忘錄模式

簡介 備忘錄模式是一種行爲模式,該模式用於保存對象當前狀態,並且在之後可以再次恢復到此狀態。備忘錄模式實現的方式需要保證被保存的對象狀態不能被對象從外部訪問,目的是爲了保護好被保存的這些對象狀態的完整性以及內部實現不向外暴露。 定義

原创 設計模式—裝飾模式

定義 動態的給一個對象添加一些額外的職責,就增加功能來說,裝飾模式生成子類更靈活。 使用場景 需要透明且動態的擴展類的功能時 關鍵點 一個抽象組件角色—接口或抽象類,被裝飾的原始對象 一個或多個具體組件—抽象組件的具體實現,被裝飾的具

原创 設計模式—命令模式

簡介 命令模式其實就是將一系列的方法調用進行封裝,用戶只需要調用一個方法執行,那麼所有這些被封裝的方法將會被依次調用。 定義 將一個請求封裝成一個對象,從而讓用戶使用不同的請求將客戶端參數化,對請求隊列或者記錄請求日誌,以及支持可撤銷

原创 設計模式—訪問者模式

簡介 訪問者模式是一種將數據操作與數據結構分離的設計模式,基本思想是軟件系統中擁有一個由許多對象構成的、比較穩定的對象結構,這些對象都擁有一個accept方法用來接受訪問者對象的訪問。訪問者是一個接口,擁有一個visit方法,這個方法

原创 設計模式—適配器模式

定義 適配器模式把一個類的接口轉換成客戶端所期待的另一種接口,從而使原本因接口不匹配而無法一起工作的的兩個類能夠在一起工作 使用場景 系統需要使用現有的類,而此類的接口不符合系統的需要,即接口不兼容 想要建立一個可以重複使用的類,用於

原创 android架構設計—mvp模式封裝

簡介 關於Android程序的構架, 當前比較成熟且使用最多的應該就是MVP架構了,當然還有其他的如:MVC和MVVM。MVC相對於較爲落後,、耦合度太高、職責不明確,MVVM使用DataBind,普及性不如MVP,況且Google官

原创 設計模式—中介者模式

定義 中介者模式包裝了一系列對象相互作用的方式,使得這些對象不必相互明顯作用。從而可以使他們可以鬆散耦合。當某些對象之間的作用發生改變時,不會立即影響其他的一些對象之間的作用。從而保證這些作用可以彼此獨立變化。中介者模式將多對多的相互

原创 設計模式—橋接模式

重點內容 定義 將抽象部分與實現部分分離,使它們都可以獨立地進行變化 使用場景 如果一個系統需要在構件的抽象化角色和具體化角色之間增加更多的靈活性,避免在兩個層次之間建立靜態的繼承關係,可以通過橋接模式使他們在抽象層建立一個關聯關係

原创 設計模式—享元模式

簡介 享元模式時對象池的一種實現,用來儘可能減少內存的使用量,適合用於可能存在大量重複對象的場景,來緩存可共享的對象,達到對象共享、避免創建過多對象的效果,這樣就可以有效的提升性能、避免內存移除等。 享元對象中的部分狀態是可以共享的,

原创 設計模式—模板方法模式

定義 定義一個操作中的算法的框架,而將一些步驟延遲到子類中,使得子類可以不改變一個算法的結構即可重新定義該算法的某些特定步驟,通俗來講就是流程固定,具體實現不同 使用場景 多個子類有公有的方法,並且邏輯基本相同 重要、重複的算法,可以