程式設計六大原則

2021-10-01 04:43:17 字數 1903 閱讀 8679

目錄

單一職責原則(single responsibility principle)

開閉原則(open closed principle)

黎克特制替換原則(liskov substitution principle)

依賴倒置原則(dependence inversion principle)

介面隔離原則(inte***ce segregation principle)

迪公尺特原則(law of demeter)乙個軟體實體應當盡可能少地與其他實體發生相互作用

簡單來說單一職責就是乙個類只負責乙個功能。更加具體的說就是對乙個類而言,應該是一組相關性很高的函式、資料的封裝,是高內聚低耦合的,對外界而言應該僅有乙個引起它變化的原因。

專案中的新手引導變數的管理可以統一在各自的modle中用單獨的類來管理

mvp模式p層生命週期與v層生命週期的同步可以用單獨的包裝類來實現,

各種基礎框架功能的定義,例如:的載入、快取、顯示等都應該在各自的類中去做。

乙個軟體實體應當對擴充套件開放,對修改關閉。即軟體實體應盡量在不修改原有**的情況下進行擴充套件。

在軟體的生命週期內,因為變化、公升級和維護等原因需要對軟體的原有**進行修改時,可能會將錯誤的**引入,從而破壞原有系統。因此當軟體需求發生變化時,我們應該盡量通過擴充套件的方式 來實現變化,而不是通過修改已有的**。

基類與子類,子類可以繼承父類並擴充套件父類的功能

介面與實現類,介面定義功能,實現類按照各自的需求實現

黎克特制替換原則的核心是抽象,而抽象又依賴於繼承這個特性,在oop當中,繼承的優缺點都相當明顯。

**重用,減少建立類的成本,每個子類都擁有父類的方法和屬性

子類與父類基本相似,但又與父類有所區別

提高**的可擴充套件性

繼承是侵入性的,只要繼承就必須擁有父類的方法和屬性

可能造成子類**冗餘,靈活性降低,因為子類必須擁有父類的屬性和方法

黎克特制代換原則是實現開閉原則的重要方式之一,由於使用基類物件的地方都可以使用子類物件,因此在程式中盡量使用基類型別來對物件進行定義,而在執行時再確定其子類型別,用子類物件來替換父類物件。

在使用黎克特制代換原則時需要注意如下幾個問題:

子類的所有方法必須在父類中宣告,或子類必須實現父類中宣告的所有方法。根據黎克特制代換原則,為了保證系統的擴充套件性,在程式中通常使用父類來進行定義,如果乙個方法只存在子類中,在父類中不提供相應的宣告,則無法在以父類定義的物件中使用該方法。

我們在運用黎克特制代換原則時,盡量把父類設計為抽象類或者介面,讓子類繼承父類或實現父介面,並實現在父類中宣告的方法,執行時,子類例項替換父類例項,我們可以很方便地擴充套件系統的功能,同時無須修改原有子類的**,增加新的功能可以通過增加乙個新的子類來實現。黎克特制代換原則是開閉原則的具體實現手段之一。

應用:在繼承類時,務必重寫(override)父類中所有的方法,尤其需要注意父類的 protected 方法,子類盡量不要暴露自己的 public 方法供外界呼叫。

高層模組不應該依賴於低層模組,兩者都應該依賴其抽象

抽象不應該依賴於細節

細節應該依賴於抽象

開閉原則是目標,黎克特制代換原則是基礎,依賴倒轉原則是手段,它們相輔相成,相互補充,目標一致,只是分析問題時所站角度不同而已。

乙個軟體實體應當盡可能少地與其他實體發生相互作用

通俗的講,乙個類應該對自己需要耦合或呼叫的類知道的最少,類的內部如何實現與呼叫者或者依賴者沒有關係,呼叫者或者依賴者只需要知道他需要的方法即可,其他的一概不管。類與類之間的關係越密切,耦合度越大,當乙個類發生改變時,對另乙個類的影響也越大。

物件導向程式設計六大原則

一 單一職責原則 全稱 single responsibility principle 說明 就乙個類而言,應該只專注於做一件事和僅有乙個引起它變化的原因。所謂職責,我們可以理解他為功能,就是設計的這個類功能應該只有乙個,而不是兩個或更多。也可以理解為引用變化的原因,當你發現有兩個變化會要求我們修改...

程式設計六大原則之介面隔離原則

定義 客戶端不應該依賴他不需要的介面 類間的依賴關係應該建立在最小的介面上 簡而言之 要為各個類建立他們需要的專用介面,而不要試圖建立乙個很龐大的介面供他們呼叫 介面隔離原則是對介面的使用進行約束規範的乙個原則 優點 將龐大的介面分解為多個粒度小的介面,可以預防外來變更的擴散 避免介面汙染 提高系統...

程式設計六大原則之開放封閉原則

1.定義 軟體實體 包括類 模組 函式 應該為擴充套件而開啟,為修改而關閉。大概意思就是 乙個軟體實體應該通過擴充套件來實現變化,而不是通過修改原有的 來實現變化 2.實現 開閉原則實現關鍵是抽象 抽象基類 把系統的所有可能的行為抽象成乙個抽象底層,這個抽象底層規定出所有的具體實現必須提供的方法的特...