1. Spring啟示錄

捞月亮的小北發表於2024-06-25

1. OCP 開閉原則

開閉原則是這樣說的:在軟體開發過程中應當對擴充套件開放,對修改關閉。也就是說,如果在進行功能擴充套件的時候,新增額外的類是沒問題的,但因為功能擴充套件而修改之前執行正常的程式,這是忌諱的,不被允許的。因為一旦修改之前執行正常的程式,就會導致專案整體要進行全方位的重新測試。這是相當麻煩的過程。導致以上問題的主要原因是:程式碼和程式碼之間的耦合度太高。如下圖所示:

image

可以很明顯的看出,上層是依賴下層的。UserController依賴UserServiceImpl,而UserServiceImpl依賴UserDaoImplForMySQL,這樣就會導致下面只要改動上面必然會受牽連(跟著也會改) ,所謂牽一髮而動全身。這樣也就同時違背了另一個開發原則:依賴倒置原則。

2. 依賴倒置原則 (DIP原則)

依賴倒置原則(Dependence Inversion Principle),簡稱DIP,主要倡導面向抽象程式設計,面向介面程式設計,不要面向具體程式設計,讓上層不再依賴下層,下面改動了,上面的程式碼不會受到牽連。這樣可以大大降低程式的耦合度,耦合度低了,擴充套件力就強了,同時程式碼複用性也會增強。(軟體七大開發原則都是在為解耦合服務

像這種把物件的建立權交出去,把物件關係的管理權交出去,被稱為控制反轉。

3. 控制反轉 IoC

控制反轉(Inversion of Control,縮寫為IoC),是物件導向程式設計中的一種設計思想,可以用來降低程式碼之間的耦合度,符合依賴倒置原則。

控制反轉的核心是:將物件的建立權交出去,將物件和物件之間關係的管理權交出去,由第三方容器來負責建立與維護

控制反轉常見的實現方式:依賴注入(Dependency Injection,簡稱DI)

通常,依賴注入的實現又包括兩種方式:

  • set方法注入
  • 構造方法注入

而Spring框架就是一個實現了IoC思想的框架。

IoC可以認為是一種全新的設計模式,但是理論和時間成熟相對較晚,並沒有包含在GoF中。(GoF指的是23種設計模式)

相關文章