坚实原则:依赖倒置原则
到目前為止,我們只研究了單一職責 , 打開/關閉 , liskov替換和接口隔離原則。
依賴倒置是我們要研究的最后一個原理之一。
該原則指出
答:高級模塊不應依賴于低級模塊。 兩者都應依賴抽象。
B.抽象不應依賴細節。 細節應取決于抽象。
讓我們開始一些違反該原理的代碼。
作為軟件團隊,我們需要實施一個項目。 目前,軟件團隊包括:
后端開發人員
package com.gkatzioura.solid.di;public class BackEndDeveloper {public void writeJava() {} }還有一個前端開發人員
package com.gkatzioura.solid.di;public class FrontEndDeveloper {public void writeJavascript() {}}我們的項目在整個開發過程中都使用。
package com.gkatzioura.solid.di;public class Project {private BackEndDeveloper backEndDeveloper = new BackEndDeveloper();private FrontEndDeveloper frontEndDeveloper = new FrontEndDeveloper();public void implement() {backEndDeveloper.writeJava();frontEndDeveloper.writeJavascript();}}因此,我們可以看到Project類是一個高級模塊,它依賴于諸如BackEndDeveloper和FrontEndDeveloper之類的低級模塊。 實際上,我們違反了依賴倒置原則的第一部分。
同樣通過檢查Project.class的實現功能,我們認識到方法writeJava和writeJavascript是綁定到相應類的方法。 關于項目范圍,這些都是細節,因為在兩種情況下它們都是開發形式。 因此,違反了依賴倒置原則的第二部分。
為了解決這個問題,我們將實現一個稱為Developer接口的接口。
package com.gkatzioura.solid.di;public interface Developer {void develop(); }因此,我們引入一個抽象。
BackEndDeveloper應該重構為
package com.gkatzioura.solid.di;public class BackEndDeveloper implements Developer {@Override public void develop() {writeJava();}private void writeJava() {}}并且將FrontEndDeveloper重構為
package com.gkatzioura.solid.di;public class FrontEndDeveloper implements Developer {@Override public void develop() {writeJavascript();}public void writeJavascript() {}} [/sourecode]The next step in order to tackle the violation of the first part would be to refactor the Project class so that it will not depend on the FrontEndDeveloper and the BackendDeveloper class.package com.gkatzioura.solid.di;import java.util.List;public class Project {private List<Developer> developers;public Project(List<Developer> developers) {this.developers = developers;}public void implement() {developers.forEach(d->d.develop());}}結果是Project類不依賴于較低級別的模塊,而是依賴于抽象。 低層模塊及其細節也取決于抽象。
您可以在github上找到源代碼。
另外,我還編寫了備忘單,其中包含一些扎實的原則。 在鏈接中注冊以接收它。
翻譯自: https://www.javacodegeeks.com/2018/02/solid-principles-dependency-inversion-principle.html
總結
以上是生活随笔為你收集整理的坚实原则:依赖倒置原则的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux服务器同步命令(linux服务
- 下一篇: ddos攻击教程(ddos攻击演示)