面向對象編程中的一些重要思想(乾貨滿滿):

1.在軟件工程中,之所以出現了這麼多的概念,和一些複雜的技術,目的就是爲了寫出可維護的代碼

2.軟件工程中的OCP原則--->開閉原則:Open Close Principle 開閉原則

      開閉原則講究的是對擴展敞開,對修改關閉。意思就是:我們已經開發完畢的代碼,儘可能的不要在原文件中進行程序的修改,因爲,如果修改了源代碼,可能會引出一些不必要的錯誤和麻煩。

      那麼如果我們想要實現程序的開閉原則,以java語言爲例,前提就是面向抽象編程,在java中,面向抽象編程的方法主要通過interface  抽象類 來實現,如果我們想要在程序中制定一些規範,或者我們想要統一對某個方法的調用,那麼我們可以使用interface。如果我們想要提取某些公共的方法,以供其他類使用,那麼我們可以定義一個抽象類,抽象類的內部包含這些方法,將這個抽象類作爲基類,讓其它類可以繼承當前類。

單單依靠interface 和 抽象類,只能達到方法的統一調用,以及代碼複用的目的,卻不能保證對象實例化的統一。

3.我們知道,使用java語言設計的系統,是由一個個的Class類組成的,之所以系統能夠工作,是因爲類與類的實例化對象之間存在着一定的聯繫,所以如果在Class A 中,需要Class B 的實例化對象。那麼我們就需要在Class A 中注入 Class B 的實例化對象。一旦業務發生改變,Class A 現在依賴Class C , 不再依賴Class B , 那麼我們還需要重新New 一個 Class C 的實例。那麼這時我們就會被迫修改原代碼,導致我們違反了OCP原則。就不能保持代碼的穩定性。由此我們可以得出一個結論:如果一段代碼需要保持穩定,那麼在這段代碼中,就儘可能的不要出現New 這個關鍵字。只有這樣,才能逐步實現開閉原則。

那麼上面這個結論的本質就是-->如果一段代碼想要保持穩定,那麼他就不能負責對象的實例化工作,但是對象的實例化在系統中是不可避免的,我們只能把實例化代碼的工作歸到單獨的一個模塊去做。總該有一個角色來完成這個工作,這個角色,就可以使用工廠設計模式,或者 IOC容器 來充當。因爲無論是工廠模式,還是IOC容器,都可以解決對象的實例化問題。

4.工廠模式的理解:工廠模式的作用是爲了分離對象的實例化

工廠設計模式分爲 簡單工廠抽象工廠 ,那麼簡單工廠它是對實例化對象的抽象,它所能創建的所有實例化對象,都需要 implements 同一個接口。抽象工廠它是對工廠本身的抽象,在所有的具體的工廠的上層,會存在一個頂級的工廠接口,所有的具體工廠都需要 implements 這個頂級接口。

在工廠模式的內部,我們可以使用反射機制,來實例化對象,作爲工廠的使用者來說,我們不需要關心工廠內部的具體實現,需要什麼對象,只需要給工廠一個指令即可。

5.對Spring中的IOC容器的理解:

IOC:Inversion of Controller 控制反轉,雖然工廠設計模式與IOC都可以實現對 對象實例化的隔離,但是工廠模式,終究還是需要開發人員發出指令,我需要用什麼實例對象,你就給我返回什麼實例對象,這種控制權還是掌握在開發人員的手中。但是IOC容器它實現的控制的反轉,本質就是-->我們開發人員只需要開發一個個的業務類,至於類與類之間應該如何依賴,他們之間的關係應該如何維護,這個不需要我們開發人員關心,交給業務方。就像我們在代碼中使用@Autowired實現自動注入一樣,我們注入的只是一個interface,至於它到底會返回什麼樣的實例化對象,由具體的業務需求來決定。就像搭積木一樣,一開始需要開發人員自己造積木,然後自己搭建積木。但是有了IOC容器以後,我們的開發人員只需要造出一個個的積木即可,至於這個積木怎麼搭建,由具體的業務本身來決定。這種對實例化對象注入的控制權,由開發人員---->轉換到IOC容器,這個轉換的過程,纔是體現IOC容器控制反轉的真正奧義。

DI:Dependency Injection 依賴注入,有人說依賴注入和IOC是同一個意思,只是叫法不同而已,但是我認爲,IOC是一種設計控制反轉的思想,它並不是Spring的專利,但是Spring通過DI這種方式將它具體的實現了,所以我認爲,DI是IOC在Spring中的具體實現。它可以將對象自動的注入到需要的地方。實現依賴注入的方式有三種:(1)構造方法注入(2)Setter注入(3)屬性注入

DIP:Dependency Injection Principle 依賴倒置原則,它的核心就是要依賴抽象編程。

(1)高層模塊不應該依賴頂層模塊,兩者都應該依賴抽象。抽象代表高層,具體實現代表底層。(2)抽象不應該依賴細節(3)細節應該依賴抽象

6.IOC容器的基本實現原理:IOC容器中,使用到的最基本的技術就是:工廠模式+反射技術,但是,工廠模式+反射 並不等於IOC,因爲它沒有體現出 控制反轉 這個特性。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章