<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                3.4 最佳實踐 依賴倒置原則的本質就是通過抽象(接口或抽象類)使各個類或模塊的實現彼此獨立,不互相影響,實現模塊間的松耦合,我們怎么在項目中使用這個規則呢?只要遵循以下的幾個規則就可以: ● 每個類盡量都有接口或抽象類,或者抽象類和接口兩者都具備 這是依賴倒置的基本要求,接口和抽象類都是屬于抽象的,有了抽象才可能依賴倒置。 ●?變量的表面類型盡量是接口或者是抽象類 很多書上說變量的類型一定要是接口或者是抽象類,這個有點絕對化了,比如一個工具類,xxxUtils一般是不需要接口或是抽象類的。還有,如果你要使用類的clone方法,就必須使用實現類,這個是JDK提供的一個規范。 ●?任何類都不應該從具體類派生 如果一個項目處于開發狀態,確實不應該有從具體類派生出子類的情況,但這也不是絕對的,因為人都是會犯錯誤的,有時設計缺陷是在所難免的,因此只要不超過兩層的繼承都是可以忍受的。特別是負責項目維護的同志,基本上可以不考慮這個規則,為什么?維護工作基本上都是進行擴展開發,修復行為,通過一個繼承關系,覆寫一個方法就可以修正一個很大的Bug,何必去繼承最高的基類呢?(當然這種情況盡量發生在不甚了解父類或者無法獲得父類代碼的情況下。) ●?盡量不要覆寫基類的方法 如果基類是一個抽象類,而且這個方法已經實現了,子類盡量不要覆寫。類間依賴的是抽象,覆寫了抽象方法,對依賴的穩定性會產生一定的影響。 ●?結合里氏替換原則使用 在第2章中我們講解了里氏替換原則,父類出現的地方子類就能出現,再結合本章的講解,我們可以得出這樣一個通俗的規則: 接口負責定義public屬性和方法,并且聲明與其他對象的依賴關系,抽象類負責公共構造部分的實現,實現類準確的實現業務邏輯,同時在適當的時候對父類進行細化。 講了這么多,估計大家對“倒置”這個詞還是有點不理解,那到底什么是“倒置”呢?我們先說“正置”是什么意思,依賴正置就是類間的依賴是實實在在的實現類間的依賴,也就是面向實現編程,這也是正常人的思維方式,我要開奔馳車就依賴奔馳車,我要使用筆記本電腦就直接依賴筆記本電腦,而編寫程序需要的是對現實世界的事物進行抽象,抽象的結果就是有了抽象類和接口,然后我們根據系統設計的需要產生了抽象間的依賴,代替了人們傳統思維中的事物間的依賴,“倒置”就是從這里產生的。 依賴倒置原則的優點在小型項目中很難體現出來,例如小于10個人月的項目,使用簡單的SSH架構,基本上不費太大力氣就可以完成,是否采用依賴倒置原則影響不大。但是,在一個大中型項目中,采用依賴倒置原則有非常多的優點,特別是規避一些非技術因素引起的問題。項目越大,需求變化的概率也越大,通過采用依賴倒置原則設計的接口或抽象類對實現類進行約束,可以減少需求變化引起的工作量劇增的情況。人員的變動在大中型項目中也是時常存在的,如果設計優良、代碼結構清晰,人員變化對項目的影響基本為零。大中型項目的維護周期一般都很長,采用依賴倒置原則可以讓維護人員輕松地擴展和維護。 依賴倒置原則是6個設計原則中最難以實現的原則,它是實現開閉原則的重要途徑,依賴倒置原則沒有實現,就別想實現對擴展開放,對修改關閉。在項目中,大家只要記住是“面向接口編程”就基本上抓住了依賴倒置原則的核心。 講了這么多依賴倒置原則的優點,我們也來打擊一下大家,在現實世界中確實存在著必須依賴細節的事物,比如法律,就必須依賴細節的定義。“殺人償命”在中國的法律中古今有之[[1]](#),那這里的“殺人”就是一個抽象的含義,怎么殺,殺什么人,為什么殺人,都沒有定義,只要是殺人就統統得償命,這就是有問題了,好人殺了壞人,還要陪上自己的一條性命,這是不公正的,從這一點看,我們在實際的項目中使用依賴倒置原則時需要審時度勢,不要抓住一個原則不放,每一個原則的優點都是有限度的,并不是放之四海而皆準的真理,所以別為了遵循一個原則而放棄了一個項目的終極目標:投產上線和盈利。作為一個項目經理或架構師,應該懂得技術只是實現目的的工具,惹惱了頂頭上司,設計做得再漂亮,代碼寫得再完美,項目做得再符合標準,一旦項目虧本,產品投入大于產出,那整體就是扯淡!你自己也別想混得更好! [[1]](#)當年漢高祖劉邦入關后與老百姓約法三章,其中有一條就是:“殺人者死,傷人及盜抵罪。”
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看