java技術知識路線資料點撥:開源面向對象五大基本原則+四大特性

學習java篇:開源面向對象五大基本原則

java技術知識路線資料點撥:開源面向對象五大基本原則+四大特性


1. 單一職責原則SRP(Single Responsibility Principle)

是指一個類的功能要單一,不能包羅萬象。如同一個人一樣,分配的工作不能太多,否則一天到晚雖然忙忙碌碌的,但效率卻高不起來。


2. 開放封閉原則OCP(Open-Close Principle)

是所有面向對象原則的核心。軟件設計本身所追求的目標就是封裝變化、降低耦合,而開放封閉原則正是對這一目標的最直接體現。其他的設計原則,很多時候是為實現這一目標服務的,例如以Liskov替換原則實現最佳的、正確的繼承層次,就能保證不會違反開放封閉原則。一個模塊在擴展性方面應該是開放的而在更改性方面應該是封閉的。比如:一個網絡模塊,原來只服務端功能,而現在要加入客戶端功能,那麼應當在不用修改服務端功能代碼的前提下,就能夠增加客戶端功能的實現代碼,這要求在設計之初,就應當將服務端和客戶端分開,公共部分抽象出來。

其核心的思想是:

軟件實體應該是可擴展,而不可修改的。也就是說,對擴展是開放的,而對修改是封閉的。因此,開放封閉原則主要體現在兩個方面:

2.1.對擴展開放,意味著有新的需求或變化時,可以對現有代碼進行擴展,以適應新的情況。

2.2.對修改封閉,意味著類一旦設計完成,就可以獨立完成其工作,而不要對類進行任何修改。

“需求總是變化”、“世界上沒有一個軟件是不變的”,這些言論是對軟件需求最經典的表白。

3. 替換原則(the Liskov Substitution Principle LSP)

java技術知識路線資料點撥:開源面向對象五大基本原則+四大特性


子類應當可以替換父類並出現在父類能夠出現的任何地方。比如:公司搞年度晚會,所有員工可以參加抽獎,那麼不管是老員工還是新員工,

也不管是總部員工還是外派員工,都應當可以參加抽獎,否則這公司就不和諧了。

4. 依賴原則(the Dependency Inversion Principle DIP) 具體依賴抽象,上層依賴下層。假設B是較A低的模塊,但B需要使用到A的功能,

這個時候,B不應當直接使用A中的具體類: 而應當由B定義一抽象接口,並由A來實現這個抽象接口,B只使用這個抽象接口:這樣就達到

了依賴倒置的目的,B也解除了對A的依賴,反過來是A依賴於B定義的抽象接口。通過上層模塊難以避免依賴下層模塊,假如B也直接依賴A的實現,那麼就可能造成循環依賴。一個常見的問題就是編譯A模塊時需要直接包含到B模塊的cpp文件,而編譯B時同樣要直接包含到A的cpp文件。


java技術知識路線資料點撥:開源面向對象五大基本原則+四大特性


5. 接口分離原則(the Interface Segregation Principle ISP)

模塊間要通過抽象接口隔離開,而不是通過具體的類強耦合起來

所謂對象就是由一組數據結構和處理它們的方法組成的,劃重點 “數據” 包括對象的特性、狀態等的靜態信息; “方法” 也就是行為,包括該對象的對數據的操作、功能等能動信息。把相同行為的對象歸納為類,類是一個抽象的概念,對象是類的具體。簡單點說:對象就是類的實例。例如:一個水果店,就是一個類,它是所有水果的集合。裡面的具體水果就是對象。

清楚了什麼是對象之後,接下來就是理解什麼是面向對象。

面向對象的目的:解決軟件系統的可擴展性,可維護性和可重用性;

面向對象的編程方法具有四個基本特徵:

1.抽象:

抽象就是忽略一個主題中與當前目標無關的那些方面,以便更充分地注意與當前目標有關的方面。抽象並不打算了解全部問題,而只是選擇其中的一部分,暫時不用部分細節。比如,我們要設計一個學生成績管理系統,考察學生這個對象時,我們只關心他的班級、學號、成績等,而不用去關心他的身高、體重這些信息。抽象包括兩個方面,一是過程抽象,二是數據抽象。過程抽象是指任何一個明確定義功能的操作都可被使用者看作單個的實體看待,儘管這個操作實際上可能由一系列更低級的操作來完成。數據抽象定義了數據類型和施加於該類型對象上的操作,並限定了對象的值只能通過使用這些操作修改和觀察。

2.繼承:

繼承是一種聯結類的層次模型,並且允許和鼓勵類的重用,它提供了一種明確表述共性的方法。對象的一個新類可以從現有的類中派生,這個過程稱為類繼承。新類繼承了原始類的特性,新類稱為原始類的派生類(子類),而原始類稱為新類的基類(父類)。派生類可以從它的基類那裡繼承方法和實例變量,並且類可以修改或增加新的方法使之更適合特殊的需要。這也體現了大自然中一般與特殊的關係。繼承性很好的解決了軟件的可重用性問題。比如說,所有的Windows應用程序都有一個窗口,它們可以看作都是從一個窗口類派生出來的。但是有的應用程序用於文字處理,有的應用程序用於繪圖,這是由於派生出了不同的子類,各個子類添加了不同的特性。

3.封裝:

封裝是面向對象的特徵之一,是對象和類概念的主要特性。封裝是把過程和數據包圍起來,對數據的訪問只能通過已定義的界面。面向對象計算始於這個基本概念,即現實世界可以被描繪成一系列完全自治、封裝的對象,這些對象通過一個受保護的接口訪問其他對象。一旦定義了一個對象的特性,則有必要決定這些特性的可見性,即哪些特性對外部世界是可見的,哪些特性用於表示內部狀態。在這個階段定義對象的接口。通常,應禁止直接訪問一個對象的實際表示,而應通過操作接口訪問對象,這稱為信息隱藏。事實上,信息隱藏是用戶對封裝性的認識,封裝則為信息隱藏提供支持。封裝保證了模塊具有較好的獨立性,使得程序維護修改較為容易。對應用程序的修改僅限於類的內部,因而可以將應用程序修改帶來的影響減少到最低限度。

4. 多態性:

多態性是指允許不同類的對象對同一消息作出響應。比如同樣的加法,把兩個時間加在一起和把兩個整數加在一起肯定完全不同。又比如,同樣的選擇編輯-粘貼操作,在字處理程序和繪圖程序中有不同的效果。多態性包括參數化多態性和包含多態性。多態性語言具有靈活、抽象、行為共享、代碼共享的優勢,很好的解決了應用程序函數同名問題。

java技術知識路線資料點撥:開源面向對象五大基本原則+四大特性

java技術知識路線資料點撥:開源面向對象五大基本原則+四大特性

java技術知識路線資料點撥:開源面向對象五大基本原則+四大特性

java技術知識路線資料點撥:開源面向對象五大基本原則+四大特性

後臺 回覆 01 麵肥拿走,,,記得 轉發或評論 一下 就好,謝謝支持95後的碼農

相關推薦

推薦中...