簡單介紹java中OO的概念設計原則(收藏)
下面小編就為大家帶來一篇淺談java中OO的概念和設計原則(必看)。小編覺得蠻不錯的,現在就分享給大家,也給大家做個參考。一起跟著小編過來看看吧
一. OO(物件導向)的設計基礎
物件導向(OO):就是基於物件概念,以物件為中心,以類別和繼承為建構機制,充分利用介面和多型提供彈性,來認識、理解、刻劃客觀世界和設計、建構對應的軟體系統。物件導向的特徵:雖然各種物件導向程式語言相互有別,但都能看到它們對物件導向基本特徵的支持,
即「抽象、封裝、繼承、多態」 :
– 抽象,先不考慮細節
##– 封裝,就隱藏內部實現
– 繼承,重複使用現有程式碼
#– 多態,改寫物件行為
模型,而掌握物件導向設計模式的前提是先掌握「物件導向」技術。
二. OO(物件導向)的設計目標
※可擴充性Extensibility:有了新的需求,新的效能可以容易添加到系統中,不影響現有的效能,也不會帶來新的缺陷。
※可修改性Flexibility:系統一部分的程式碼要修改時不會破壞系統的現有結構,也不會影響到其它的部分。
※可替換性Pluggability:可以將系統中的某些程式碼替換為相同介面的其它類,不會影響到系統。
三. OO設計的5大原則及其之間的關係
#3.1 OO設計原則的總結
※單一職責原則:就一個類別而言,應該只有一個造成它變化的原因。單一是一個類的優良設計。交雜不清的職責將使得程式碼看起來特別彆牽一發而動全身,有失美感和必然導致醜陋的系統錯誤風險。
※開放封閉原則:是說軟體實體(類別、模組、函數等等)應該可以擴充但不可修改。實現開開放封閉原則的核心思想是對抽象編程,而不對具體編程,因為抽象相對穩定。讓類別依賴固定的抽象,所以修改就是封閉的;而透過物件導向的繼承和多型機制,又可以實現對抽象類別的繼承,透過覆寫其方法來改變固有行為,實現新的拓展方法,所以就是開放的。 「需求總是改變」沒有不變的軟體,所以就需要用封閉開放原則來封閉變化滿足需求,同時還能維持軟體內部的封裝系統穩定,不被需求的變化影響。
※依賴倒置原則:依賴抽象,不要依賴具體。抽 象的穩定性決定了系統的穩定性,因為抽像是不變的,依賴抽像是物件導向設計的精髓,也是依賴倒置原則的核心。依賴抽像是一個通用的原則,而某些時候依 賴於細節則是在所難免的,必須權衡在抽象和具體之間的取捨,方法不是一層不變的。依賴抽象,就是對介面編程,不要對實作編程。
※里氏代換原則:子類型必須能夠替換到他們的父類型。 Liskov 替換原則,主要著眼於對抽象和多態建立在繼承的基礎上,因此只有遵循了Liskov替換原則,才能保證繼承復用是可靠地。實現的方法是面向介面程式設計:將公共部分抽象化為基底類別介面或抽象類,透過ExtractAbstractClass,在子類別中透過覆寫父類別的方法實作新的方式支持同樣的職責。 Liskov替 換原則能夠確保系統具有良好的拓展性,同時實現基於多態性的抽象機制,能夠減少程式碼冗餘,避免運作期間的類型判別。
※介面隔離原則: 多個和客戶相關的介面比一個通用介面好。分離的手段主要有以下兩種:1、委託分離,透過增加一個新的類型來委託客戶的請求,隔離客戶和介面的直接依賴,但是會增加系統的開銷。 2.多重繼承分離,透過介面多繼承來實現客戶的需求,這種方式是較好的。
下邊是前面沒有提到過的兩個原則,也是設計時要考慮的重要原則。
※迪米特法則:不互相直接溝通的類別之間,不要直接發生交互作用。如果兩個類別不必彼此直接通信,那麼這兩個類別就不應發生直接的交互作用。如果一個類別需要呼叫領一個類別的某個方法話,可以透過第三者轉發這個呼叫。迪米特法則首先強調的前提是在類別的設計上,每一類都應盡量降低成員的存取權限。它的根本思想是強調類別之間的鬆散耦合。
※合成/聚合重複使用原則:盡量使用合成/聚合,盡量不要使用繼承。合成(Composition)和聚合(Aggregation)都是關聯的特殊種類,聚合表示一種弱的擁有關係;合成這是一種強的擁有關係,體現了嚴格的部分和整體的關係,部分和整體的生命週期一樣。優先使用合成或聚合原則將有助於保持每個類別被封裝,並被集中在單一任務上。這樣類別和類別繼承層次會保持較小規模,並且不太可能成長為不可控制的龐然大物
#3.2 OO設計原則之間的關係
1. 實現「開-閉」原則(OCP)的關鍵步驟是抽象化。基底類別與子類別之間的繼承關係就是抽象化的體現。因此里氏代換原則是實現抽象化的具體步驟的規範。違反里氏代換原則意味著違反了「開-閉」原則,反之未必。
2. 「開-閉」原則與依賴倒轉原則(DIP)是目標與手段的關係。如果說開閉原則是目標,依賴倒閉原則是到達"開閉"原則的手段。如果要達到最好的"開閉"原則,就要盡量的遵守依賴倒轉原則,依賴倒轉原則是對"抽象化"的最好規範。
3. 里氏代換原則(LSP)是依賴倒轉原則的基礎,依賴倒轉原則是里氏代換原則的重要補充。
4. 介面分離原則(ISP)也是確保「開-閉」原則的一個重要手段。
5. 對於單一職責原則(SRP),個人認為盡量做到為好,職責越單一,「開-閉」和里氏代換越容易實現。
四. OO設計原則和目標的關係
1.可擴展性Extensibility :允許一個具有同樣介面的新類別取代舊類,是對抽象介面的複用。客戶端依賴抽象接口,而不是一個具體實現類,使得這個具體類可以被別的具體類替換,而不影響客戶端。以下原則實現可擴展性。
※開/閉原則
※里氏替換原則
※依賴倒轉原則
※合成/聚合復用原則
2.可修改性Flexibility:模組相對獨立,通訊盡可能少。這樣當一個模組修改時,對別的模組的影響很小。
以下原則實作可修改性。
※開/閉原則
※迪米特法則
※介面隔離原則
3、可替換性Pluggability:
# #當一部分不再滿足需求時,可以將舊的部分拔出,新的部分插入。
以下原則實現可替換性。
※開/閉原則
※里氏代換原則※依賴倒轉原則※合成/聚合復用原則
五. OO(物件導向)的設計流程1. 分析式樣,進行機能分類。 2. 根據機能進行類別的抽象化。
※ 類別的抽象 - 在這裡步裡,我們可以根據 “單一職責原則”,進行類別的具體抽象。盡量做到,類別的功能單一和清晰化。 ※ 封裝變化點– 使用封裝來建立物件
之間的分界層,讓設計者可以在分界層的一側進行修改,而不會對另一側產生不良的影響,從而實現層次間的鬆散耦合。3. 設計抽象基底類別和介面類別。
※ 在進行基本的基底類別的抽象和介面定義時,要遵照「介面分離原則」進行介面的抽象化。
※ 在設計介面和基類時,不要總是注意細節,要記住針對介面編程,而不是針對實作編程。
4.決定類別間的耦合關係。
4.1 決定耦合的程度的依據何在呢?
※ 簡單的說,就是依照需求的穩定性,來決定耦合的程度。
以上是簡單介紹java中OO的概念設計原則(收藏)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

RESTAPI設計原則包括資源定義、URI設計、HTTP方法使用、狀態碼使用、版本控制和HATEOAS。 1.資源應使用名詞表示並保持層次結構。 2.HTTP方法應符合其語義,如GET用於獲取資源。 3.狀態碼應正確使用,如404表示資源不存在。 4.版本控制可通過URI或頭部實現。 5.HATEOAS通過響應中的鏈接引導客戶端操作。

Java 8引入了Stream API,提供了一種強大且表達力豐富的處理數據集合的方式。然而,使用Stream時,一個常見問題是:如何從forEach操作中中斷或返回? 傳統循環允許提前中斷或返回,但Stream的forEach方法並不直接支持這種方式。本文將解釋原因,並探討在Stream處理系統中實現提前終止的替代方法。 延伸閱讀: Java Stream API改進 理解Stream forEach forEach方法是一個終端操作,它對Stream中的每個元素執行一個操作。它的設計意圖是處

PHP是一種廣泛應用於服務器端的腳本語言,特別適合web開發。 1.PHP可以嵌入HTML,處理HTTP請求和響應,支持多種數據庫。 2.PHP用於生成動態網頁內容,處理表單數據,訪問數據庫等,具有強大的社區支持和開源資源。 3.PHP是解釋型語言,執行過程包括詞法分析、語法分析、編譯和執行。 4.PHP可以與MySQL結合用於用戶註冊系統等高級應用。 5.調試PHP時,可使用error_reporting()和var_dump()等函數。 6.優化PHP代碼可通過緩存機制、優化數據庫查詢和使用內置函數。 7

PHP和Python各有優勢,選擇應基於項目需求。 1.PHP適合web開發,語法簡單,執行效率高。 2.Python適用於數據科學和機器學習,語法簡潔,庫豐富。

PHP適合web開發,特別是在快速開發和處理動態內容方面表現出色,但不擅長數據科學和企業級應用。與Python相比,PHP在web開發中更具優勢,但在數據科學領域不如Python;與Java相比,PHP在企業級應用中表現較差,但在web開發中更靈活;與JavaScript相比,PHP在後端開發中更簡潔,但在前端開發中不如JavaScript。

膠囊是一種三維幾何圖形,由一個圓柱體和兩端各一個半球體組成。膠囊的體積可以通過將圓柱體的體積和兩端半球體的體積相加來計算。本教程將討論如何使用不同的方法在Java中計算給定膠囊的體積。 膠囊體積公式 膠囊體積的公式如下: 膠囊體積 = 圓柱體體積 兩個半球體體積 其中, r: 半球體的半徑。 h: 圓柱體的高度(不包括半球體)。 例子 1 輸入 半徑 = 5 單位 高度 = 10 單位 輸出 體積 = 1570.8 立方單位 解釋 使用公式計算體積: 體積 = π × r2 × h (4

PHP和Python各有優勢,適合不同場景。 1.PHP適用於web開發,提供內置web服務器和豐富函數庫。 2.Python適合數據科學和機器學習,語法簡潔且有強大標準庫。選擇時應根據項目需求決定。

Java是熱門程式語言,適合初學者和經驗豐富的開發者學習。本教學從基礎概念出發,逐步深入解說進階主題。安裝Java開發工具包後,可透過建立簡單的「Hello,World!」程式來實踐程式設計。理解程式碼後,使用命令提示字元編譯並執行程序,控制台上將輸出「Hello,World!」。學習Java開啟了程式設計之旅,隨著掌握程度加深,可創建更複雜的應用程式。
