軟體設計原則 依賴倒轉原則

2021-10-19 17:42:18 字數 4342 閱讀 6993

高層模組不應該依賴低層模組,兩者都應該依賴其抽象;

抽象不應該依賴細節,細節應該依賴抽象。

簡單的說就是要求對抽象進行程式設計,不要對實現進行程式設計,

這樣就降低了客戶與實現模組間的耦合。

【例】組裝電腦

現要組裝一台電腦,需要配件cpu,硬碟,記憶體條。只有這些配置都有了,計算機才能正常的執行。

選擇cpu有很多選擇,如intel,amd等,硬碟可以選擇希捷,西數等,記憶體條可以選擇金士頓,海盜船等。

* @description: 金士頓記憶體條類

* @author: dym

*/public class kingstonmemory

}

package com.itheima.principles.demo3.before;

/** * @version v1.0

* @classname: xijieharddisk

* @description: 希捷硬碟

* @author: dym

*/public class xijieharddisk

//獲取資料的方法

public string get()

}

package com.itheima.principles.demo3.before;

/** * @version v1.0

* @classname: computer

* @description: todo(一句話描述該類的功能)

* @author: dym

*/public class computer

public void setharddisk(xijieharddisk harddisk)

public intelcpu getcpu()

public void setcpu(intelcpu cpu)

public kingstonmemory getmemory()

public void setmemory(kingstonmemory memory)

public void run()

}

package com.itheima.principles.demo3.before;

/** * @version v1.0

* @classname: computerdemo

* @description: todo(一句話描述該類的功能)

上面**可以看到已經組裝了一台電腦,但是似乎組裝的電腦的cpu只能是intel的,記憶體條只能是金士頓的,硬碟只能是希捷的,

這對使用者肯定是不友好的,使用者有了機箱肯定是想按照自己的喜好,選擇自己喜歡的配件。

根據依賴倒轉原則進行改進:

**我們只需要修改computer類,讓computer類依賴抽象(各個配件的介面),而不是依賴於各個元件具體的實現類

* @description: cpu介面

* @author: dym

*/public inte***ce cpu

package com.itheima.principles.demo3.after;

/** * @version v1.0

* @classname: intelcpu

* @description: intel cpu

* @author: dym

*/public class intelcpu implements cpu

}

package com.itheima.principles.demo3.after;

/** * @version v1.0

* @classname: harddisk

* @description: 硬碟介面

* @author: dym

*/public inte***ce harddisk

package com.itheima.principles.demo3.after;

/** * @version v1.0

* @classname: xijieharddisk

* @description: 希捷硬碟

* @author: dym

*/public class xijieharddisk implements harddisk

//獲取資料的方法

public string get()

}

package com.itheima.principles.demo3.after;

/** * @version v1.0

* @classname: memory

* @description: 記憶體條介面

* @author: dym

*/public inte***ce memory

package com.itheima.principles.demo3.after;

/** * @version v1.0

* @classname: kingstonmemory

* @description: 金士頓記憶體條類

* @author: dym

*/public class kingstonmemory implements memory

}

package com.itheima.principles.demo3.after;

/** * @version v1.0

* @classname: computer

* @description: todo(一句話描述該類的功能)

* @author: dym

*/public class computer

public void setharddisk(harddisk harddisk)

public cpu getcpu()

public void setcpu(cpu cpu)

public memory getmemory()

public void setmemory(memory memory)

//執行計算機

public void run()

}

package com.itheima.principles.demo3.after;

/** * @version v1.0

* @classname: computerdemo

* @description: todo(一句話描述該類的功能)

* @author: dym

*/public class computerdemo

}

設計原則 依賴倒轉原則

設計原則 依賴倒轉原則 dip 依賴倒轉原則 抽象不應該依賴細節,細節應該依賴抽象。通俗地說,就是要針對介面程式設計,而不要對具體實現程式設計。比如無論主機板 cpu 記憶體 硬碟都是在針對介面設計的,如果針對實現來設計,記憶體就要對應到具體的品牌的主機板,就會出現換記憶體需要把主機板也換掉的尷尬。...

軟體設計原則 依賴倒置原則

依賴倒置原則 dependence inversion principle,dip 高層模組不應該依賴底層模組,二者都應該依賴其抽象.抽象不應該依賴細節,細節應該依賴抽象.new 乙個小明 public class xiaoming public void studyartscourse 呼叫一下 ...

軟體設計原則 依賴倒置原則(DIP)

要依賴於抽象,不要依賴於具體。要針對介面程式設計,不要針對實現程式設計。陳述 分析 層次化 booch 對上述論述可能存在兩種不同的理解 1 依賴關係倒置 下層的實現,依賴於上層的介面 2 介面所有權倒置 客戶擁有介面,而服務者則從這些介面派生 我們可以分兩種模式來定義 1 依賴不倒置的開發 自頂向...