<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智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                # Spring IOC > 原文: [https://javatutorial.net/ioc-in-spring](https://javatutorial.net/ioc-in-spring) 解釋控制反轉(IOC)概念的一個著名示例是霍利伍德(Holywood)原則,該原則規定“不要打電話給我們,我們會打電話給您”。 毫無疑問,這是一個非常準確的類比,因此有很多人將其稱為類比。 ![spring-featured-image](https://img.kancloud.cn/64/23/64231db4bf6e880066d0d4c2e31ac166_780x330.jpg) 通常,類創建依賴關系。 但是,IOC 為我們提供了相反的功能–只要類需要這些依賴關系,它們就可以在運行時提供給類。 您現在知道為什么霍利伍德類比如此準確嗎? 課堂上沒有說“不要打電話給我們,我們會打電話給您”,而是依賴項說的。 為什么這么重要? 好吧,這很重要,因為這些類可以僅專注于提供功能,而不是在正確的時間調用正確的依賴項。 ## IOC 到底是什么? 除了上面已經解釋的內容外,還可以將控制反轉(IOC)視為通常的總體工作流程的反轉器,例如 高級對象處理依賴關系的方式。 反轉控制(IOC)的另一個著名名稱是依賴注入(DI),這意味著依賴已被正確注入,并且對象/類在對象創建中不會受到青睞,而是專注于執行正確的功能。 ## 不使用 IOC 的頂級概述代碼實現 ```java public class WithoutIOCDemo { static class Creature { public void determineRaceAndSpawn(String _race) { if (_race.equals("Human")) { Human hum = new Human(); human.spawn(); } else if (_race.equals("Sark")) { Sark sark = new Sark(); sark.spawn(); } else if (_race.equals("Mavvek")) { Mavvek mav = new Mavvek(); mav.spawn(); } else { System.out.println("No such race spported. The only options are: Human, Sark and Mavvek."); } } } public static void main(String [] args) { WithoutIOCDemo noIOC = new WithoutIOCDemo(); noIOC.determineRaceAndSpawn("Human"); // would work } } ``` 從該簡單示例中可以看到,`defineRace`方法依賴于諸如`Human`,`Sark`和`Mavvek`之類的較低級對象。 **請注意**:方法`spawn()`剛剛組成,我們可以假裝它存在并且按照它說的去做。 現在,讓我們看一下如何通過使用 IOC 并使得`defineRace`方法不依賴于較低級別的對象來獲得與上述示例相同的結果。 ## 使用 IOC 的頂層概述代碼實現 ```java public class WithIOCDemo { Creature creature; public WithIOCDemo(Creature creature) { this.creature = creature; } public void determineRaceAndSpawn() { this.creature.spawn(); } public static void main(String [] args) { Creature humanCreature = new Human(); WithIOCDemo noIOC = new WithIOCDemo(humanCreature); noIOC.determineRaceAndSpawn(); // would work } } ``` 乍一看,這種方法為我們節省了很多代碼行,而且確實如此。 但是更詳細一點,這也使我們的`determineRaceAndSpawn()`方法不依賴于可用的`Creature`種族(人類,Sark 和 Mavvek(請參考上面的示例))。 “不依賴”是指與沒有 IOC 實現的示例不同,我們的方法不需要在方法中實例化相應的**生物**。 現在所有方法所做的就是生成生物。 簡而言之,我們消除了實例化以及生成生物的負擔。 現在,它只會生成它。 因此,如果將函數從`determineRaceAndSpawn()`重命名為:`spawnCreature()`,這將是有意義的。
                  <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>

                              哎呀哎呀视频在线观看