<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>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                ## 軟件設計架構 鏈接 http://blog.sina.com.cn/s/blog_554634270100oo2k.html 架構設計之依賴倒置、控制反轉與依賴注入 (2011-01-28 16:50:11)轉載▼ 標簽: 雜談 分類: 計算機與 Internet 名詞解釋 依賴:一種模型元素之間的關系的描述。例如類A調用了類B,那么我們說類A依賴于類B。 耦合:一種模型元素之間的關系的描述。例如類A調用了類B或類B調用了類A,那么我們說類A與類B有耦合關系。 耦合度:模型元素之間的依賴程度的量化描述。 控制:一種模型元素之間的關系的描述。例如類A調用了類B,那么我們說類A控制類B。 緒論 架構設計的對象一般是類庫、框架和應用程序。其工作任務除了類庫、框架、應用程序各個模塊(類)之間的關系設計之外,還包括類庫、框架和應用程序三者之間關系的設計。而依賴倒置、控制反轉、依賴注入正是常用的一類設計模式。 依賴倒置、控制反轉、依賴注入三者含義和目標基本一致,即通過抽象接口解耦和消除依賴關系。 依賴倒置 從字面理解依賴倒置往往不知所云,通過了解其歷史淵源可以很好的消除這種誤解。在面向結構編程時代,架構設計師往往采用自上而下的設計模式,先設計上層模塊,再設計下層模塊,如此層層分解,導致上層模塊嚴重依賴于下層模塊,下層模塊的一點變化都會導致上層地震。到了面向對象編程時代,架構設計師使用對象進行設計,通過抽象接口解耦各層之間的依賴關系,為了與面向結構的設計模式區分開,同時體現面向對象的優勢,也為了嘩眾取寵,就給這種新的設計模式起了個依賴倒置的名稱。 依賴倒置的核心思想是依賴于抽象。 依賴倒置的原則是上層模塊不依賴于下層模塊,而是依賴于一套抽象接口,上層模塊調用接口,下層模塊實現接口。以類庫和應用程序為例,我們把應用程序需要調用的功能抽象為一組接口,然后由類庫實現這組接口,那么應用程序就可以使用任意實現了該接口的類庫,從而和類庫解耦。 控制反轉 控制反轉的來歷與依賴倒置相似,以前設計應用程序,雖然會引用類庫,但一切都在應用程序的控制之中。后來根據應用程序的不同場景,人們設計了相應的框架,有了框架之后,再設計應用程序時,就變成了為框架增加自定義行為的設計,控制權轉到了框架手里,因此說控制權反轉了。 控制反轉是依賴倒置的一種具體實現,強調的是控制流程的依賴倒置,是框架設計的必用模式。框架基于依賴倒置模式設計:對于框架中不確定的部分,框架抽象出一組接口,并依賴于這組接口進行實現,應用程序實現這組接口。 依賴注入 依賴注入也是依賴倒置的一種具體實現,是類庫設計的一種常用模式。類庫中的類基于依賴模式設計:某類依賴于接口,而不是具體的實現,由調用者在調用時傳入這些接口的具體實現類。 .Net中廣泛使用此模式,比如StreamReader類,當使用StreamReader時,需要實例化一個Stream或其派生類,傳給StreamReader的構造函數,然后方能使用該類的方法。 弊病 依賴倒置的基礎是假設抽象是穩定的。對于我們已經了解的事物,當然可以實現很好的抽象,但對于尚未認識清楚的事物,比如用戶需求,就很難保證這個抽象的穩定性。因此一旦這個抽象穩定的假設不成立,那么依賴倒置不但不能發揮優勢,反倒可能成為包袱。 * * * * * [完整的 PHP 依賴倒置原則例程](http://mp.weixin.qq.com/s/D7Xow1FI_bQ41KGtjZ26TA) > 依賴倒置和控制反轉,實際上是一個東西,只是站在的角度不同的理解而已。比如,A調用B,站在A的角度,它說,本來是我依賴于你,沒想到站在倒過來了,你要依賴我了,這就是依賴倒置。站在B的角度,它說,本來是我控制你,沒想到現在反轉成你控制我了。 [PHP容器——Pimple運行流程淺析](https://mp.weixin.qq.com/s/VxOdcgvC_jKA11mVD5E0dg) [【譯】深入研究 Laravel 的依賴注入容器](https://mp.weixin.qq.com/s/yFjmrXAe9S45JqBAUgobhA) * * * * * 其它參考: http://blog.csdn.net/zhengzhb/article/details/7289269 http://blog.csdn.net/vebasan/article/details/8003118 http://blog.jobbole.com/85535/ last update:2018-1-12 04:03:29
                  <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>

                              哎呀哎呀视频在线观看