中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

java設計模式的依賴倒置原則怎么實現

發布時間:2022-03-31 15:27:49 來源:億速云 閱讀:204 作者:iii 欄目:編程語言

這篇文章主要講解了“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設計模式的依賴倒置原則怎么實現這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

嘉鱼县| 蚌埠市| 平邑县| 德惠市| 连平县| 阜宁县| 新河县| 行唐县| 高陵县| 上栗县| 家居| 江门市| 右玉县| 晴隆县| 霞浦县| 楚雄市| 平遥县| 梅河口市| 澄迈县| 普兰店市| 青川县| 渝中区| 尼玛县| 建水县| 鲁甸县| 吉隆县| 津市市| 钦州市| 马山县| 宁波市| 宜昌市| 九台市| 都江堰市| 海南省| 苏尼特左旗| 福安市| 榆社县| 毕节市| 安图县| 遂宁市| 泾川县|