物件導向的六大原則:
1.單一職責原則(single responsibility principle srp)
2.開閉原則(open close principle ocp)
3.黎克特制替換原則(liskov substitution principle lsp)
4.依賴倒轉原則(dependence inversion principle dip)
5. 介面隔離原則(inte***ce segregation principle isp)
6.迪公尺特原則 (least knowledge principle lkp)
單一職責原則:
就乙個類而言,應該僅有乙個引起它變化的原因,簡而言之:乙個類應該是一組相關性很高的函式、資料的封裝。
乙個類盡量只有乙個職責(相關),兩個完全不一樣的功能就不應該放在乙個類中,通過不斷審視自己的**,根據具體的業務,功能對類進行相應的拆分。
開閉原則:
軟體中的物件(類、模組、函式等)應該對於擴充套件開放,對於修改是封閉的。
程式一旦開發完成,程式中的乙個類的實現只因錯誤而被修改,新的或者改變的特性應該通過新建不同的類來實現,新建的類可以通過繼承的方式來重用原類的**。
eg:抽象為介面,對於擴充套件,新增類來實現。
黎克特制替換原則:
1.如果對每乙個型別為s的物件o1,都有型別為t的物件o2,是的以t定義的所有程式p在所有的獨享o1都換成o2,程式p的行為沒有發生變化,那麼型別s是型別t的子型別。
2.所有引用積累的地方必須能透明地使用其子類的物件。
物件導向語言的三大特點:資料抽象(封裝)、繼承、多型
黎克特制替換原則依賴於繼承、多型。通俗來說:只要父類能出現的地方子類就可以出現,而且替換為子類也不會產生任何錯誤或者異常,但反過來就未必能行,有子類出現的地方,父類未必就能適應。將父類使用的地方替換為子類,事項多型。這就是黎克特制替換原則。
依賴倒轉原則:
指代一種特定的解耦形式,使高層次的模組不依賴於低層次的模組的實現細節的目的。
1.高層模組不應該依賴底層模組,兩者都應該依賴其抽象。
2.抽象不應該依賴細節。
3.細節應該依賴抽象。
抽象:指介面或者抽象類
細節:實現類,實現介面或者繼承抽象類而產生的類就是細節,特點:可以直接被例項化
也就是說,模組間的依賴通過抽象發生,實現類之間不發生直接的依賴關係,其依賴關係是通過介面或者抽象類來實現,依賴抽象而不依賴具體實現,這就是依賴倒轉原則。
介面隔離原則:
顧名思義,在設計類時,我們需要將各種介面隔離,使用最少的介面,類間的依賴關係應該建立在最小的介面上。他的目的就是:系統解開耦合,從而容易重構,更改和重新部署。
迪公尺特原則:
乙個物件應該對其他物件有最少了解,這個原則的提出也是為了降低耦合度的,便於整個系統維護,公升級等等。
類與類之間的關係越密切,耦合度越大,乙個類發生改變時,對另乙個類的影響也就越大, only talk to your immedate friends 只於直接的朋友通訊。
其實這六大原則,總的來說,目的都是一樣:降低耦合性,便於維護,擴充套件。
當然,我們在程式設計的時候不能老是想著這六大原則,從而限制了我們的思維。需要通過大量實踐讓我們來把這六大原則融會貫通。
物件導向 六大原則
舉乙個簡單的例子,登入功能。一般登入需要包括幾個基本的功能 1.登入頁面 2.接受使用者輸入 3.提交使用者輸入資料到服務端驗證 4.返回驗證結果並提示給使用者 按照單一原則我們就可以將登入功能拆分成兩個類,登入頁類和網路請求類。其實因為單一原則並不是很容易劃分,很多時候需要根據個人經驗和實際情況 ...
物件導向六大原則
先來看物件導向的六大原則吧 一 單一職責原則 二 開閉原則 三 黎克特制替換原則 四 依賴倒置原則 五 介面隔離原則 六 迪公尺特原則class imageloader 就像上面的 一樣我們把所有功能寫到乙個類中,隨著我們專案越來越大功能也越來越大,會導致這個類很龐大也很脆弱。這時候可以拆分出來每個...
物件導向六大原則
引用一段經典的話,武學的最高境界是無招勝有招 在程式設計領域,設計模式就可以認為是招數,而真正的內功心法是設計原則 下面講述一下程式設計中應該遵循的基本原則 乙個類只負責一種職責,只有這種職責的改變會導致這個類的變更。繞口一點的正統說法 不要存在多於乙個原因導致類變更 假如 類t 負責有兩種職責 p...