您好,登錄后才能下訂單哦!
這篇文章主要講解了“面向對象設計原則是什么”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“面向對象設計原則是什么”吧!
設計原則是設計模式的理論基礎,設計模式就是它們的實踐。七大設計原則簡單歸納如下表所示:
設計原則 | 概括 | 目的 |
---|---|---|
開閉原則 | 對擴展開放,對修改關閉 | 降低維護帶來的新風險 |
里氏替換原則 | 不要破壞繼承體系,子類重寫方法功能發生改變,不應該影響父類方法的含義 | 防止繼承泛濫 |
依賴倒置原則 | 高層不應該依賴低層,要面向接口編程 | 更利于代碼結構的升級擴展 |
單一職責原則 | 一個類只干一件事,實現類要單一 | 便于理解,提高代碼的可讀性 |
接口隔離原則 | 一個接口只干一件事,接口要精簡單一 | 功能解耦,高聚合、低耦合 |
迪米特原則 | 不該知道的不要知道,一個類應該保持對其它對象最少的了解,降低耦合度 | 減少代碼臃腫 |
合成復用原則 | 盡量使用組合或者聚合關系實現代碼復用,少使用繼承 | 降低代碼耦合 |
原則思想: 軟件實體應當對擴展開放,對修改關。
描述:一個軟件產品在生命周期內,都會發生變化,既然變化是一個既定的事實,當應用的需求改變時,在不修改軟件實體的源代碼或者二進制代碼的前提下,可以擴展模塊的功能,使其滿足新的需求。
優點:提高代碼的可復用性,提高軟件的可擴展性和可維護性。
思想: 繼承必須確保超類所擁有的性質在子類中仍然成。
描述:子類可以擴展父類的功能,但不能改變父類原有的功能。子類可以實現父類的抽象方法,但不能覆蓋父類的非抽象方法,子類中可以增加自己特有的方法。 反映了基類與子類之間的關系,是對開閉原則的補充,是對實現抽象化的具體步驟的規范。
優點:增加程序的健壯性, 類的擴展不會給已有的系統引入新的錯誤,降低了代碼出錯的可能性。
思想:高層次的模塊不應該依賴于低層次的模塊,它們都應該依賴于抽象,抽象不應該依賴于具體實現,具體實現應該依賴于抽象。
描述: 在軟件設計中,細節具有多變性,而抽象層則相對穩定,因此以抽象為基礎搭建起來的架構要比以細節為基礎搭建起來的架構要穩定得多。 使用接口或者抽象類的目的是制定好規范和契約,而不去涉及任何具體的操作,把展現細節的任務交給它們的實現類去完成。依賴倒置原則是實現開閉原則的重要途徑之一,它降低了客戶與實現模塊之間的耦合。
優點: 降低類間的耦合性; 提高代碼的可讀性和可維護性; 減少并行開發引起的風險。
思想:一個類(或方法www.jqmms.com)只負責一件事情。 就是控制類的粒度大小、將對象解耦、提高其內聚性。
描述: 又稱單一功能原則,這里的職責是指類變化的原因,單一職責原則規定一個類應該有且僅有一個引起它變化的原因,否則類應該被拆分。 如果一個對象承擔了太多的職責,至少存在兩個缺點:1、一個職責的變化可能會削弱或者抑制這個類實現其他職責的能力;2、當客戶端需要該對象的某一個職責時,不得不將其他不需要的職責全都包含進來,從而造成冗余代碼或代碼的浪費。
優點:降低類和類的耦合, 降低類的復雜度, 提高可讀性,增加可維護性和可拓展性,降低可變性的風險。
原則思想:類和類之間應該建立在最小接口的上。
描述: 要求程序員盡量將臃腫龐大的接口拆分成更小的和更具體的接口,讓接口中只包含客戶感興趣的方法。 要為各個類建立它們需要的專用接口,而不要試圖去建立一個很龐大的接口供所有依賴它的類去調用。
優點:提高程序的靈活度,提高內聚,減少對外交互,使得最小的接口做最多的事情。
注意: 接口的粒度需要合理定義,如果 定義過小,則會造成接口數量過多,使設計復雜化;如果定義太大,靈活性降低,無法提供定制服務,給整體項目帶來無法預料的風險。
接口隔離原則和單一職責都是為了提高類的內聚性、降低它們之間的耦合性,體現了封裝的思想,但兩者是不同的:
# 單一職責原則注重的是職責,而接口隔離原則注重的是對接口依賴的隔離。
# 單一職責原則主要是約束類,它針對的是程序中的實現和細節;接口隔離原則主要約束接口,主要針對抽象和程序整體框架的構建。
原則思想:一個對象應當對其他對象有盡可能少地了解,簡稱類間解耦
描述:一個類盡量減少自己對其他對象的依賴,原則是低耦合,高內聚,只有使各個模塊之間的耦合盡量的低,才能提高代碼的復用率。
優點:低耦合,高內聚,提高類的可復用性和系統的可擴展性。
注意: 過度使用迪米特法則會使系統產生大量的中介類,從而增加系統的復雜性,使模塊之間的通信效率降低。所以,在釆用迪米特法則時需要反復權衡,確保高內聚和低耦合的同時,保證系統的結構清晰。
原則思想:由于合成或聚合可以將已有對象納入到新對象中,使之成為新對象的一部分,因此新對象可以調用已有對象的功能。
描述: 它要求在軟件復用時,要盡量先使用組合或者聚合等關聯關系來實現,其次才考慮使用繼承關系來實現。 一般而言,如果一個角色得到了更多的責任,那么可以使用合成/聚合關系將新的責任委派到合適的對象。當然,這種復用也有缺點。最主要的缺點就是通過這種復用建造的系統會有較多的對象需要管理。
優點: 維持了類的封裝性,成分對象的內部細節是新對象看不見的,所以這種復用又稱為“黑箱”復用。新舊類之間的耦合度低,這種復用所需的依賴較少,新對象存取成分對象的唯一方法是通過成分對象的接口。復用的靈活性高,這種復用可以在運行時動態進行,新對象可以動態地引用與成分對象類型相同的對象。
實際上,這些原則的目的只有一個:降低對象之間的耦合,增加程序的可復用性、可擴展性和可維護性。 在實際開發過程中,并不是一定要求所有代碼都遵循設計原則,而是要綜合考慮人力、時間、成本、質量,不刻意追求完美,要在適當的場景遵循設計原則。這體現的是一種平衡取舍,可以幫助我們設計出更加優雅的代碼結構。
感謝各位的閱讀,以上就是“面向對象設計原則是什么”的內容了,經過本文的學習后,相信大家對面向對象設計原則是什么這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。