單一職責(zé)原則
每個類都應(yīng)該有一個單一的功能拧烦,并且該功能應(yīng)該由這個類完全封裝起來套耕。所有它的(這個類的)服務(wù)都應(yīng)該嚴(yán)密的和該功能平行(功能平行规婆,意味著沒有依賴)。
開閉原則
軟件中的對象(類瞒斩,模塊,函數(shù)等等)應(yīng)該對于擴展是開放的涮总,但是對于修改是封閉的胸囱,這意味著一個實體是允許在不改變它的源代碼的前提下變更它的行為。該特性在產(chǎn)品化的環(huán)境中是特別有價值的妹卿,在這種環(huán)境中旺矾,改變源代碼需要代碼審查,單元測試以及諸如此類的用以確保產(chǎn)品使用質(zhì)量的過程夺克。遵循這種原則的代碼在擴展時并不發(fā)生改變箕宙,因此無需上述的過程。
里氏替換原則
派生類(子類)對象能夠替換其基類(超類)對象被使用
依賴倒置原則
是指一種特定的解耦(傳統(tǒng)的依賴關(guān)系創(chuàng)建在高層次上铺纽,而具體的策略設(shè)置則應(yīng)用在低層次的模塊上)形式柬帕,使得高層次的模塊不依賴于低層次的模塊的實現(xiàn)細節(jié),依賴關(guān)系被顛倒(反轉(zhuǎn)),從而使得低層次模塊依賴于高層次模塊的需求抽象陷寝。
圖1中锅很,高層對象A依賴于底層對象B的實現(xiàn);圖2中凤跑,把高層對象A對底層對象的需求抽象為一個接口A爆安,底層對象B實現(xiàn)了接口A,這就是依賴反轉(zhuǎn)仔引。
接口隔離原則
沒有客戶(client)應(yīng)該被迫依賴于它不使用方法扔仓。接口隔離原則拆分非常龐大臃腫的接口成為更小的和更具體的接口,這樣客戶將會只需要知道他們感興趣的方法咖耘。接口隔離原則的目的是系統(tǒng)解開耦合翘簇,從而容易重構(gòu),更改和重新部署儿倒。