1.單一職責(zé)原則
對象應(yīng)該僅具有一種功能葵擎。例如:Activity代碼過多導(dǎo)致臃腫,MVP架構(gòu)分離controller和view之間的耦合
2.開閉原則
一個(gè)軟件實(shí)體如類狸捕、模塊和函數(shù)對擴(kuò)展開放秉犹,對修改關(guān)閉。Retrofit晚树、Volley姻采、ImageLoader
3.里氏替換原則
程序中的對象應(yīng)該是在不改變程序正確性的前提下被它的子類所替代(和多態(tài)類似),就好比之前的代碼GpsTracker里的startLocation()中爵憎,我們聲明的是抽象父類慨亲,在方法中,我們中工廠模式實(shí)現(xiàn)子類
4.接口隔離原則
拆分非常強(qiáng)大臃腫的接口成為更小和更具體的接口宝鼓,多個(gè)特定客戶端接口好于一個(gè)寬泛用途的接口刑棵。例如,Http請求中愚铡,在CallBack的時(shí)候我們有多個(gè)方法(onpre蛉签、onupdate、onsuccess沥寥。碍舍。。营曼。第一個(gè)是網(wǎng)絡(luò)請求前乒验、第二個(gè)是下載文件的進(jìn)度更新),當(dāng)我們調(diào)用get方法時(shí)蒂阱,我們不需要這么多方法锻全,所以應(yīng)該細(xì)分接口狂塘。
一個(gè)接口有騎飛跑三個(gè)功能,當(dāng)某一個(gè)類實(shí)現(xiàn)后鳄厌,如果這個(gè)類不具備跑的功能荞胡,它仍然要實(shí)現(xiàn)跑的方法。
5.依賴倒置原則
就是要依賴于抽象了嚎,不要依賴于具體泪漂。要求對抽象進(jìn)行編程,不要對實(shí)現(xiàn)進(jìn)行編程歪泳,降低了客戶與實(shí)現(xiàn)模塊間的耦合萝勤。還是GpsTracker里的方法例子。