1. 程式人生 > >程式設計原則之依賴倒置原則

程式設計原則之依賴倒置原則

一、什麼是依賴倒置原則

高層模組的實現儘量不要依賴低層模組的實現,他們應該共同依賴抽象

儘量面向介面或抽象程式設計,而不是面向實現程式設計,也就是說要從介面或者抽象擴充套件,而不是從實現擴充套件

二、看一個高層模組依賴低層模組的例子

以學習課程為例:

上面這個輸出的是學習java課程,如果想要擴充套件學習前端課程,就得修改低層的Lwl實現類:

上面的軟體設計是很不科學的,修改低層實現比較容易造成其他地方出現問題,層次越低與其他模組耦合的可能性越大。

三、採用依賴倒置的原則進行重新設計

1、採用方法傳參的形式注入

這樣讓中間的Lwl類與底層的具體課程類之間解耦合,他們共同依賴同一個介面ICourse,如果再有其他的課程加入只需要重新定義一個新類實現介面就行,這樣高層模組的實現不依賴低層模組,他們依賴共同的介面,並且面向介面程式設計,具體學習哪門課程直接在最上層的應用層中進行處理,此時的類圖如下:

2、採用構造方法進行注入

3、採用專門的注入器函式進行注入

看到這裡的實現是不是有很熟悉的感覺,Spring的IOC(反轉控制),更貼切的應該說是依賴注入,Spring中的service物件與這裡的Lwl物件相似,應用層(例如controller層)通過注入Dao層物件到service層,就可以通過service層與Dao層進行互動,而這些都在xml檔案中進行配置。這樣需要什麼樣的Dao層物件直接在應用層進行注入即可。