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

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                依賴注入和依賴注入容器 為了降低代碼耦合程度,提高項目的可維護性,Yii采用多許多當下最流行又相對成熟的設計模式,包括了**依賴注入**(Denpdency Injection, DI)和**服務定位器**(Service Locator)兩種模式。 關于依賴注入與服務定位器, Inversion of Control Containers and the Dependency Injection pattern 給出了很詳細的講解,這里結合Web應用和Yii具體實現進行探討,以加深印象和理解。 這些設計模式對于提高自身的設計水平很有幫助,這也是我們學習Yii的一個重要出發點。 有關概念: **依賴倒置原則**(Dependence Inversion Principle, DIP) DIP是一種軟件設計的指導思想。傳統軟件設計中,上層代碼依賴于下層代碼,當下層出現變動時, 上層代碼也要相應變化,維護成本較高。而DIP的核心思想是上層定義接口,下層實現這個接口, 從而使得下層依賴于上層,降低耦合度,提高整個系統的彈性。這是一種經實踐證明的有效策略。 **控制反轉**(Inversion of Control, IoC) IoC就是DIP的一種具體思路,DIP只是一種理念、思想,而IoC是一種實現DIP的方法。 IoC的核心是將類(上層)所依賴的單元(下層)的實例化過程交由第三方來實現。 一個簡單的特征,就是類中不對所依賴的單元有諸如 $component = new yii\component\SomeClass() 的實例化語句。 依賴注入(Dependence Injection, DI) DI是IoC的一種設計模式,是一種套路,按照DI的套路,就可以實現IoC,就能符合DIP原則。 DI的核心是把類所依賴的單元的實例化過程,放到類的外面去實現。 **控制反轉容器**(IoC Container) 當項目比較大時,依賴關系可能會很復雜。 而IoC Container提供了動態地創建、注入依賴單元,映射依賴關系等功能,減少了許多代碼量。 Yii 設計了一個 yii\di\Container 來實現了 DI Container。 **服務定位器**(Service Locator) Service Locator是IoC的另一種實現方式, 其核心是把所有可能用到的依賴單元交由Service Locator進行實例化和創建、配置, 把類對依賴單元的依賴,轉換成類對Service Locator的依賴。 DI 與 Service Locator并不沖突,兩者可以結合使用。 目前,Yii2.0把這DI和Service Locator這兩個東西結合起來使用,或者說通過DI容器,實現了Service Locator。
                  <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>

                              哎呀哎呀视频在线观看