原创 【設計模式】合成複用原則

以下內容來自《Java設計模式》 1 合成複用原則 合成複用原則又稱爲組合/聚合複用原則(Composition/Aggregate Reuse Principle, CARP),其定 義如下: 合成複用原則(Composite Reus

原创 【設計模式】接口隔離原則

以下內容來自《Java設計模式》 1 接口隔離原則 接口隔離原則定義如下: 接口隔離原則(Interface Segregation Principle, ISP):使用多個專門的接口,而不使用單一 的總接口,即客戶端不應該依賴那些它不需

原创 【設計模式】依賴倒轉原則

【設計模式】依賴倒轉原則 以下內容來自【Java設計模式】 如果說開閉原則是面向對象設計的目標,那麼依賴倒轉原則就是面向對象設計的主要實現機制之一,它是系統抽象化的具體實現。依賴倒轉原則是Robert C. Martin在1996年爲C++

原创 【Android實例】用設計原則來重構1像素保活代碼

1 類圖 在【FJU項目】1像素進程保活(二)中,涉及到的幾個類的類圖如下所示(僅供參考): 實線箭頭:關聯 虛線箭頭:依賴 在上圖中,OnePixelManager裏面有太多的職責,違背了單一職責原則。裏面還有很多地方違背了其它的設計原則

原创 【設計模式】里氏替換原則

以下內容來自《Java設計模式》 里氏代換原則 里氏代換原則由2008年圖靈獎得主、美國第一位計算機科學女博士、麻省理工學院的Barbara Liskov(芭芭拉-利斯科夫)教授和卡內基-梅隆大學的Jeannette Wing教授於1994

原创 【設計模式】開閉原則

以下內容來自《Java設計模式》 1 開閉原則 開閉原則是面向對象的可複用設計的第一塊基石,它是最重要的面向對象設計原則。開閉原則由Bertrand Meyer於1988年提出,其定義如下: 開閉原則:軟件實體應當對擴展開放,對修改關閉。

原创 【設計模式】單一職責原則

以下內容來自《Java設計模式》 1 單一職責原則 單一職責原則是最簡單的面向對象設計原則,它用於控制類的粒度大小。單一職責原則的定義如下: 單一職責原則:一個對象應該只包含單一的職責,並且該職責被完整地封裝在一個類中。 單一職責原則的

原创 【RxJava2.0】基本使用(一)

本文主要參考這裏,因爲之前沒用過RxJava2.0,最近想學習學習,這位大神寫得很不錯,但是光看看難以記牢,就自己敲文字加代碼加強記憶。 RxJava2已經出來很久了,網上的博客很多,現在RxJava3都出來了,本文算是學習筆記。 1 Gr

原创 【Android實例】1像素進程保活(二)

1 前言 前面一篇【Android實例】1像素進程保活(一)是最基礎的寫法,但是這種寫法還有些不足,還可以進行優化。因爲內存也是一個考慮的因素,內存越多的進程會最先被kill掉,所以我們可以開啓一個服務,然後將該服務放在另一個進程中,這樣這

原创 【ArrayList源碼】lastIndexOf源碼及使用

1 lastIndexOf源碼 /** * Returns the index of the last occurrence of the specified element * in this list, or

原创 【Android組件開發】統一配置文件

由於組件化實踐中模塊比較多,因此配置gradle,添加依賴庫時,需要考慮簡化工作。 第一步:在Project目錄下點擊鼠標右鍵,依次new——>File 第二步:然後輸入統一配置文件的名稱,以.gradle結尾 第三步:在新建的統一配

原创 【LinkedList源碼】LinkedList的構造方法源碼及用法

1 LinkedList構造方法 LinkedList繼承自AbstractSequentialList類,實現了List、Deque、Cloneable和Serializable接口。linkedList有兩個構造方法,一個是無參構造方法

原创 【ArrayList源碼】remove源碼及使用

1 remove源碼 在ArrayList源碼裏,remove有兩個方法,一個是按照索引index移除元素,另一個是按照值移除元素。 按索引移除 /** * Removes the element at the spec

原创 【Android組件開發】組件化簡介

組件:指的是單一的功能組件,如視頻組件(VideoSDK)、支付組件(PaySDK)、路由組件(Router)等。每個組件都能單獨抽出來製作成SDK。 組件化開發的好處: 組件化框架可以使模塊單獨編譯調試,可以有效地減少編譯的時間,從而提

原创 【ArrayList源碼】contains源碼及使用

1 contains源碼 /** * Returns <tt>true</tt> if this list contains the specified element. * More formally, retu