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

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                38.5 空對象模式 空對象模式(Null Object Pattern)是通過實現一個默認的無意義對象來避免null值出現,簡單地說,就是為了避免在程序中出現null值判斷而誕生的一種常用設計方法。 38.5.1 空對象模式的例子 舉個簡單的例子來說明,我們寫一個聽動物叫聲的模擬程序,如代碼清單38-38所示。 代碼清單38-38 動物叫聲 //定義動物接口 public?interface?Animal?{ ?????public?void?makeSound(); } //定義一個小狗 class?Dog?implements?Animal{ ?????public?void?makeSound(){ ??????????System.out.println(“Wang?Wang?Wang!”); ?????} } 然后再定義一個人來聽動物的叫聲,如代碼清單38-39所示。 代碼清單38-39 聽動物叫聲的人 public?class?Person?{ ?????//聽到動物叫聲 ?????public?void?hear(Animal?animal){ ??????????if(animal?!=null){ ???????????????animal.makeSound(); ??????????} ?????} } 注意看粗體部分,也許你覺得程序沒有什么問題,輸入參數animal是應該做空值判斷。但是,我們這樣思考:在一個完整的系統中,animal對象是如何產生?什么原因會產生null值?如果我們能夠控制住null值的產生,是不是就可以去掉這個空值判斷了?那這樣,程序是不是更易讀更簡單?好,我們就編寫一個更完美的程序,增加一個NullAnimal類,如代碼清單38-40所示。 代碼清單38-40 增加一個NullAnimal class?NullAnimal?implements?Animal{ ??public?void?makeSound(){ ??} } 增加了NullAnimal類后,在Person類中就不需要"animal!=null"這句話了,因為我們提供了一個實現接口的所有方法,不會再產生null對象。想象一個Web項目中,animal對象可能由MVC框架映射產生,我們只要定義一個默認的映射對象是NullAnimal,就可以解決空值判斷的問題,提升代碼的可讀性。這就是空對象模式(一些項目組把它作為編碼規范的一部分),非常簡單,但非常實用。 38.5.2 最佳實踐 空對象模式是通過空代碼實現一個接口或抽象類的所有方法,以滿足開發需求,簡化程序。它如此簡單,以至于我們經常在代碼中看到和使用,對它已經熟視無睹了,而它無論是事前規劃或事后重構,都不會對我們的代碼產生太大沖擊,這也是我們“藐視”它的根本原因。
                  <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>

                              哎呀哎呀视频在线观看