您好,登錄后才能下訂單哦!
這篇文章主要講解了“java設計模式的依賴倒置原則怎么實現”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“java設計模式的依賴倒置原則怎么實現”吧!
依賴倒置原則(Dependence Inversion Principle),簡稱DIP
定義
High level modules should depend upon low level modules. Both should depend upon abstractions. Abstractions should not depend upon details. Details should depend upon abstractions.
即
1、高層模塊不應該依賴低層模塊,兩者都應該依賴于抽象(抽象類或接口)
2、抽象(抽象類或接口)不應該依賴于細節(具體實現類)
3、細節(具體實現類)應該依賴抽象
抽象:即抽象類或接口,兩者是不能夠實例化的。
細節:即具體的實現類,實現接口或者繼承抽象類所產生的類,兩者可以通過關鍵字new直接被實例化。
而依賴倒置原則的本質騎士就是通過抽象(抽象類或接口)使各個類或模塊的實現彼此獨立,不相互影響,實現模塊間的松耦合。但是這個原則也是6個設計原則中最難以實現的了,如果沒有實現這個原則,那么也就意味著開閉原則(對擴展開發,對修改關閉)也無法實現。
依賴倒置有三種方式來實現
1、通過構造函數傳遞依賴對象
比如在構造函數中的需要傳遞的參數是抽象類或接口的方式實現。
2、通過setter方法傳遞依賴對象
即在我們設置的setXXX方法中的參數為抽象類或接口,來實現傳遞依賴對象
3、接口聲明實現依賴對象
例如下面的例子
涂涂是個女僧
public class Tutu { //涂涂是個女孩,會煮面 public void cook(Noodles noodles) { noodles.eat(); } }
面條(目前只會煮面)
public class Noodles { //吃面條 public void eat() { System.out.println("涂涂吃面條..."); } }
涂涂坐在家里吃面(場景類)
public class Home { public static void main(String args[]) { Tutu tutu = new Tutu(); Noodles food = new Noodles(); tutu.cook(food); } }
運行結果:涂涂吃面條...
但是這有個問題,涂涂只會做面條,不可能每次都吃面條吧,天天吃面吃死你,所以在上面的Tutu類中的cook方法中,如果涂涂會做其他吃的,那豈不是更好。于是她向家庭主婦邁進了一步,使用了依賴倒置原則。
也就是涂涂通過學習還可以燜米飯,炒魷魚(雖然聽著不爽,但是很好吃),京醬肉絲啊等等。要想在代碼中實現,就需要實現兩個接口:ITutu和IFood
public interface ITutu { //這樣就會做很多飯菜了 public void cook(IFood food); }
實現類
public class Tutu implements ITutu { @Override public void cook(IFood food) { food.eat(); } }
食物接口
public interface IFood { public void eat(); }
這樣就為擴展留出了很大的空間,方面擴展其他的類。也不會對細節有變動。以后涂涂想吃什么學一下就可以自己做了
實現面條
public class Noodles implements IFood { @Override public void eat() { System.out.println("涂涂吃面條..."); } }
實現米飯
public class Rice implements IFood { @Override public void eat() { System.out.println("涂涂吃米飯(終于吃上米飯了)..."); } }
場景類:涂涂在家里開吃了,想吃什么直接做就是了
public class Home { public static void main(String args[]) { //接口使不能實例化滴 ITutu tutu = new Tutu(); //實例化米飯,涂涂可以吃米飯了 IFood rice = new Rice(); //吃面條 //IFood noodles = new Noodles(); tutu.cook(rice); } }
這樣各個類或模塊的實現彼此獨立,不互相影響,實現了。
感謝各位的閱讀,以上就是“java設計模式的依賴倒置原則怎么實現”的內容了,經過本文的學習后,相信大家對java設計模式的依賴倒置原則怎么實現這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。