摘要:單一職責原則開閉原則里氏替換原則依賴倒置原則接口隔離原則迪米特法則組合聚合復用原則單一職責原則高內聚低耦合定義不要存在多于一個導致類變更的原因。建議接口一定要做到單一職責,類的設計盡量做到只有一個原因引起變化。使用繼承時遵循里氏替換原則。
單一職責原則
開閉原則
里氏替換原則
依賴倒置原則
接口隔離原則
迪米特法則
組合/聚合復用原則
單一職責原則(Single Responsibility Principle)——高內聚、低耦合
定義:不要存在多于一個導致類變更的原因。通俗的說,一個類只負責一項職責,應該僅有一個引起它變化的原因。
適用于:模塊、類、接口、方法。
優點:
降低復雜度;提高可讀性,系統的可維護性;降低變更引起的風險。
建議:接口一定要做到單一職責,類的設計盡量做到只有一個原因引起變化。
開閉原則(Open Close Principle)—— 高內聚、低耦合
定義:一個軟件實體如類、模塊和函數應該對擴展開放,對修改關閉。
面對新需求,對程序的改動是通過增加新代碼進行的,而不是更改現有的代碼。
經典的話說:過去的事已成為歷史,是不可修改的,因為時光不可倒流,但現在或明天計劃做什么,是可以自己決定(即擴展)的。
怎樣的設計才能面對需求的改變卻可以保持相對穩定,從而使得系統可以在第一個版本后不斷推出新的版本呢?開放-封閉。
在發生小的變化時,就及早去想辦法應對發生更大變化的可能。
等到發生變化時立即采取行動。創建抽象來隔離以后發生的同類變化。
開發人員應該對程序中頻繁變化的那部分做出抽象。
拒絕不成熟的抽象和抽象本身一樣重要。
里氏替換原則(Liskov Substitution Principle)——低耦合
定義:子類型必須能夠替換掉它們的父類型。
里氏替換原則通俗的來講就是:子類可以擴展父類的功能,但不能改變父類原有的功能。
子類可以實現父類的抽象方法,但不能覆蓋父類的非抽象方法。
子類中可以增加自己特有的方法。
如果不遵循里氏替換原則,代碼出現問題的幾率會大大的增加。
依賴倒置原則(Dependence Inversion Principle)
定義:高層模塊不應該依賴底層模塊,二者都應該依賴其抽象;抽象不應該依賴細節;細節應該依賴抽象;即針對接口編程,不要針對實現編程。
程序中所有的依賴關系都終止于抽象類或者接口,那就是面向對象的設計,反之那就是過程化的設計。
這個是開閉原則的基礎。
“面向接口編程”——OOD(Object-Oriented Design,面向對象設計)的精髓之一。
在實際編程中,我們一般需要做到如下3點:
底層模塊盡量都要有抽象類或接口,或者兩者都有。
變量的聲明類型盡量是抽象類或接口。
使用繼承時遵循里氏替換原則。
接口隔離原則(Interface Segregation Principle)——高內聚
含義:建立單一接口,盡量細化接口,接口中的方法盡量少。
為各個類建立專用的接口。
在程序設計中,依賴幾個專用的接口要比依賴一個綜合的接口更靈活。
運用接口隔離原則,一定要適度,接口設計的過大或過小都不好。
設計接口的時候,只有多花些時間去思考和籌劃,才能準確地實踐這一原則。
迪米特法則(Law Of Demeter)——松耦合
迪米特法則又叫最少知道原則,通俗的來講,就是一個類對自己依賴的類知道的越少越好。
也就是說,對于被依賴的類來說,無論邏輯多么復雜,都盡量地的將邏輯封裝在類的內部,對外除了提供的public方法,不對外泄漏任何信息。
迪米特法則還有一個更簡單的定義:只與直接的朋友通信。
一句話總結就是:一個對象應該對其他對象保持最少的了解。
組合/聚合復用原則(Composition/Aggregation Reuse Principle )——松耦合
盡量使用合成和聚合,而不是集成來達到復用的目的。
該原則就是在一個新的對象里面使用一些已有的對象,使之成為新對象的一部分,新的對象通過向這些對象的委派達到復用已有功能的目的。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/68401.html
摘要:引申意義子類可以擴展父類的功能,但不能改變父類原有的功能。含義當子類的方法實現父類的方法時重寫重載或實現抽象方法,方法的后置條件即方法的輸出返回值要比父類更嚴格或相等。優點約束繼承泛濫,開閉原則的一種體現。降低需求變更時引入的風險。 0x01.開閉原則 定義:一個軟件實體如類,模塊和函數應該對擴展開放,對修改關閉 要點: 當變更發生時,不要直接修改類,而是通過繼承擴展的方式完成變...
摘要:在我們做系統設計時,經常會設計接口或抽象類,然后由子類來實現抽象方法,這里使用的其實就是里氏替換原則。 1.開閉原則(Open Close Principle/OCP) 定義:一個類、模塊和函數應該對擴展開放,對修改關閉。 開放-封閉原則的意思就是說,你設計的時候,時刻要考慮,盡量讓這個類是足夠好,寫好了就不要去修改了,如果新需求來,我們增加一些類就完事了,原來的代碼能不動則不動。這個...
摘要:我們今天也來做一個萬能遙控器設計模式適配器模式將一個類的接口轉換成客戶希望的另外一個接口。今天要介紹的仍然是創建型設計模式的一種建造者模式。設計模式的理論知識固然重要,但 計算機程序的思維邏輯 (54) - 剖析 Collections - 設計模式 上節我們提到,類 Collections 中大概有兩類功能,第一類是對容器接口對象進行操作,第二類是返回一個容器接口對象,上節我們介紹了...
摘要:來來來,花分鐘看看的七大新特性,還有代碼樣例。本地是指方法內的變量聲明。從開始,這個正式進入標準庫包。同步請求會阻止當前線程。可喜的是,如果嘗試改變不可變集合,會通過發出警告是在中引入的,增加了三個新方法。 現在Java有多元化的發展趨勢,既有JS又有C++還有C#的影子,不學習那是不行滴。來來來,花5分鐘看看Java9-Java11的七大新特性,還有代碼樣例。Java11 發布了,然...
閱讀 2025·2023-04-26 00:16
閱讀 3475·2021-11-15 11:38
閱讀 3168·2019-08-30 12:50
閱讀 3178·2019-08-29 13:59
閱讀 750·2019-08-29 13:54
閱讀 2496·2019-08-29 13:42
閱讀 3305·2019-08-26 11:45
閱讀 2187·2019-08-26 11:36