日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

【设计模式】依赖倒转原则

發布時間:2025/3/20 asp.net 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【设计模式】依赖倒转原则 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

依賴倒轉原則

依賴倒轉原則是指的特點有∶

  • 高層模塊不應該依賴低層模塊,二者都應該依賴其抽象
  • 抽象不應該依賴細節,細節應該依賴抽象
  • 依賴倒轉(倒置)的 中心思想 是面向接口編程
  • 依賴倒轉原則是基于這樣的設計理念∶相對于細節的多變性,抽象的東西要穩定的多。以抽象為基礎搭建的架?構比以細節為基礎的架構要穩定的多。在 Java 中,抽象指的是接口或抽象類,細節就是具體的實現類
  • 使用接口或抽象類的目的是制定好規范,而不涉及任何具體的操作,把展現細節的任務交給他們的實現類去完?成
  • 使用接口傳遞的方法體現依賴倒轉原則

    interface Received {public String getInfo(); }class Email implements Received {public String getInfo() {return "使用Email接收。。";} }class Phone implements Received {public String getInfo() {return "使用手機接收、、";} }class Person {/*** 對接口的依賴*/public void received(Received receive) {System.out.println(receive.getInfo());} }public class DependencyInversion {public static void main(String[] args) {// 使用接口傳遞Person person = new Person();person.received(new Email());person.received(new Phone());} }

    使用構造方法傳遞的方法體現依賴倒轉原則

    interface Received {public String getInfo(); }class Email implements Received {public String getInfo() {return "使用Email接收。。";} }class Phone implements Received {public String getInfo() {return "使用手機接收、、";} } /** * 接收實體(調用實體) */ class Person {// 在調用者類中設立構造器public Received receive;public Person(Received receive) {this.receive = receive;}public void received() {System.out.println(receive.getInfo());} }public class DependencyInversion {public static void main(String[] args) {// 構造器傳遞Person person1 = new Person(new Email());person1.received();// 構造器傳遞Person person2 = new Person(new Phone());person2.received();} }

    使用 setter() 方法傳遞的方法體現依賴倒轉原則(只需要將利用構造器方法傳遞中的“接收實體”中的以接口為參數的構造器改為setter()方法,使用的使用利用setter()方法傳入接口對象即可)

    interface Received {public String getInfo(); }class Email implements Received {public String getInfo() {return "使用Email接收。。";} }class Phone implements Received {public String getInfo() {return "使用手機接收、、";} } /** * 接收實體(調用實體) */ class Person {public Received receive;public void setReceive(Received receive) {this.receive = receive;}public void received() {System.out.println(receive.getInfo());} }public class DependencyInversion {public static void main(String[] args) {// setter()方法傳遞Person person = new Person();person.setReceive(new Email());person.received();} }

    加入有一個【對象obj】,若【obj】直接指向一個對象,而沒有經過一個中間的 緩沖區,那么隨著系統的擴展,如果需要對指向的對象進行功能的擴展難度較大(修改數據、方法等等或許會影響到引用它的obj是否滿足原來需求)。

    比如,這里有一個【抽象類A】,它的實現類是B,那我們在操作的時候可以用 A obj = new B(); —— 這樣做的好處是,如果之后要擴展功能,我們不需要直接擴展B(因為B可能也被其他對象所依賴引用),而可以在A中修改代碼,可以對子類B中的方法做一個優化處理。

    在繼承時,需要遵循【里氏替換原則】

    總結

    以上是生活随笔為你收集整理的【设计模式】依赖倒转原则的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。