單一職責的劃分界限並不總是那麼清晰,很多時候需要依靠個人經驗來界定。而最大的問題是對職責的定義,什麼是類的職責,以及怎麼劃分類的職責。
雖然單一職責的劃分比較模糊,但是它也有一些基本的指導原則,例如,兩個完全不一樣的功能就不應該放在乙個類中,乙個類應該是一組相關性很高的函式、資料的封裝。
開閉原則的定義是:軟體中的物件(類、模組函式等)應該對於擴充套件是開放的,但是,對於修改是封閉的。遵循開閉原則最重要的手段是通過抽象。
在開發過程中,對原有**進行修改,可能會引入新問題。因此,當軟體需要變化時,我們應該盡量通過擴充套件的方式來實現變化,而不是通過修改已有的**來實現。
當然,只通過繼承來實現公升級維護是理想化的,在實際工作中,修改原有**、擴充套件**往往是同時存在的。
黎克特制替換原則的定義是:所有引用基類的地方必須能透明地使用子類的物件。反過來卻不行,有子類出現的地方,父類未必能適應。
黎克特制替換原則的核心原理是抽象,抽象又依賴於繼承這個特性。繼承的優缺點相當明顯,優點有以下幾點: 1、**重用,減少建立類的成本,每個子類都擁有父類的方法和屬性; 2、子類與父類基本相似,但又與父類有所區別; 3、提高**的可擴充套件性; 繼承的缺點: 1、繼承是侵入性的,只要繼承就必須擁有父類的所有屬性和方法; 2、可能造成子類**冗餘、靈活性降低,因為子類必須擁有父類的屬性和方法。
開閉原則和黎克特制替換原則往往是生死相依、不離不棄的,通過黎克特制替換來達到對擴充套件開放,對修改關閉的效果。然而,這兩個原則都同時強調了乙個oop的重要特性——抽象,因此,在開發過程中運用抽象是走向**優化的重要一步。
物件導向 六大原則
舉乙個簡單的例子,登入功能。一般登入需要包括幾個基本的功能 1.登入頁面 2.接受使用者輸入 3.提交使用者輸入資料到服務端驗證 4.返回驗證結果並提示給使用者 按照單一原則我們就可以將登入功能拆分成兩個類,登入頁類和網路請求類。其實因為單一原則並不是很容易劃分,很多時候需要根據個人經驗和實際情況 ...
物件導向六大原則
先來看物件導向的六大原則吧 一 單一職責原則 二 開閉原則 三 黎克特制替換原則 四 依賴倒置原則 五 介面隔離原則 六 迪公尺特原則class imageloader 就像上面的 一樣我們把所有功能寫到乙個類中,隨著我們專案越來越大功能也越來越大,會導致這個類很龐大也很脆弱。這時候可以拆分出來每個...
物件導向六大原則
引用一段經典的話,武學的最高境界是無招勝有招 在程式設計領域,設計模式就可以認為是招數,而真正的內功心法是設計原則 下面講述一下程式設計中應該遵循的基本原則 乙個類只負責一種職責,只有這種職責的改變會導致這個類的變更。繞口一點的正統說法 不要存在多於乙個原因導致類變更 假如 類t 負責有兩種職責 p...