一、單一職責原則(SRP)編程
Single Responsibility principle: 每一個類應只有一個引發它變化的緣由/每一個類應只擔任一個職責,以便於往後的程序的維護。spa
二、李氏替換原則(LSP) 和 依賴倒置原則(DIP)設計
Liskov Substitution Principle:LSP原則要求子類能夠無條件的替代父類,子類不能對父類沒有暴露的接口進行擴展,客戶要調用功能只能經過父類暴露的接口來調用用不能擅自向子類調用。繼承
dependence inversion principle:「高層模塊不該該依賴低層模塊,兩者都應該依賴其抽象;抽象不該該依賴細節;細節應該依賴抽象。中心思想是面向接口編程」。接口
換句話說就是設計的時候咱們要用抽象來思考,而不是一上來就開始劃分我須要哪些哪些類,由於這些是具體。這樣作有什麼好處呢?人的思惟自己實際上就是很抽象的,咱們分析問題的時候不是一會兒就考慮到細節,而是很抽象的將整個問題都構思出來,因此面向抽象設計是符合人的思惟的。ip
咱們在運用里氏代換原則時,儘可能把父類設計爲抽象類或者接口,讓子類繼承父類或實現父接口,並實如今父類中聲明的方法,運行時,子類實例替換父類實例,咱們能夠很方便地擴展系統的功能,同時無須修改原有子類的代碼,增長新的功能能夠經過增長一個新的子類來實現。里氏代換原則是開閉原則的具體實現手段之一。ci
三、接口隔離原則(ISP)it
使用多個專門的接口比使用單一的總接口要好。也就是說,一個類對另一個類的依賴性應當是創建在最小的接口上。io
四、迪米特法則(Lod:Law of Demter、LKP)擴展
一個軟件實體應當儘量少的與其餘實體發生相互做用。
一個軟件實體應當儘量少的與其餘實體發生相互做用。 迪米特法則的初衷在於下降類之間的耦合。因爲每一個類儘可能減小對其餘類的依賴,所以,很容易使得系統的功能模塊功能獨立,相互之間不存在(或不多有)依賴關係。
五、開閉原則(OCP)
一個軟件實體應當對擴展開放,對修改關閉。 你添加新功能的時候應該只是向代碼集中添加新的代碼不該該修改原來的代碼。