面向?qū)ο蟮脑瓌t是面向?qū)ο蟮哪繕?biāo),而設(shè)計(jì)模式是為了實(shí)現(xiàn)這些原則的手段和方法。這也就是為什么要有設(shè)計(jì)模式。
面向?qū)ο蟮脑瓌t:
1. 單一職責(zé)原則
一個(gè)類(lèi)只完成一個(gè)功能,完成相同功能的模塊封裝在一個(gè)類(lèi)里。
2. 開(kāi)閉原則
一個(gè)類(lèi)的代碼要對(duì)修改封閉,對(duì)拓展開(kāi)放。即,不能修改類(lèi)內(nèi)部的代碼,如果要修改,需要使得接口函數(shù)中使用抽象類(lèi),通過(guò)修改繼承抽象類(lèi)的子類(lèi)的功能來(lái)修改。或者通過(guò)Class.forName(“某個(gè)類(lèi)的字符串”)來(lái)動(dòng)態(tài)的獲得類(lèi)的信息,修改配置文件獲得不同的類(lèi)從而來(lái)修改。開(kāi)閉原則是面向?qū)ο笤O(shè)計(jì)的目標(biāo)。
3. 里氏替換原則
父類(lèi)可以透明的替換成子類(lèi)。一個(gè)類(lèi)的實(shí)例如果能夠正確運(yùn)作在一個(gè)函數(shù)里,那這個(gè)類(lèi)的子類(lèi)的實(shí)例也可以在這個(gè)函數(shù)里面正確運(yùn)行。父類(lèi)可以透明的替換成子類(lèi),也就側(cè)面要求了子類(lèi)不能有比父類(lèi)更加嚴(yán)格的訪問(wèn)限制和拋出更多的異常。
4. 依賴(lài)倒置原則
面向抽象編程。即,模塊依賴(lài)的應(yīng)該是抽象類(lèi)和接口,依賴(lài)類(lèi)是面向?qū)ο髮?shí)現(xiàn)開(kāi)閉原則的重要手段。其中很重要的是依賴(lài)注入(其實(shí)就是對(duì)依賴(lài)的抽象類(lèi)賦值)。
5. 組合復(fù)用原則
即優(yōu)先使用成員變量的組合和聚合,把依賴(lài)的類(lèi)作為成員變量。組合和聚合的依賴(lài)可以通過(guò)類(lèi)似于spring依賴(lài)注入來(lái)自動(dòng)裝配。
6.迪米特法則
一個(gè)軟件實(shí)體應(yīng)當(dāng)盡可能少的和其他實(shí)體發(fā)生相互作用,即一個(gè)類(lèi)或者函數(shù)盡可能少的和其他類(lèi)或者函數(shù)有最少的依賴(lài)。
依賴(lài)是成員變量,函數(shù)的參數(shù),函數(shù)內(nèi)的局部變量等。通俗的說(shuō)就是沒(méi)有那項(xiàng)就沒(méi)有辦法運(yùn)行的就是依賴(lài)。