<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智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                ## 一、簡單工廠 簡單工廠是面向對象編程的起步設計模式,用到面向對象設計的三大特性:封裝,繼承,多態來進行設計是必須的。 封裝:使業務邏輯和界面邏輯分離,做到代碼復用,而不是復制。 繼承:將在同一類中進行的邏輯操作,抽象出一個類或者接口,統一定義,通過子類進行不同的實現。這樣對象之間的修改就變得獨立,不會影響到其他類,降低了對象間的耦合。 多態:通過給同類Things定義接口或抽象類,由子類繼承實現統一父類方法,但不同的子類又有不同實現,將繼承和多態演繹完成。 1、簡單工廠解決的問題 原來這些業務都在同一個類中,我們通過傳入參數,來判斷具體調用哪個函數,現在我們把這些類都一個個獨立封裝起來,問題出現了, 我們應該怎樣從客戶端調用具體要實現的業務邏輯類呢??? 這時候該簡單工廠上場了。在工廠中根據客戶端傳入參數來決定要實例化的對象。 定義一個工廠類,負責創建實例過程。通過這個工廠,我們將客戶端和業務邏輯類進行聯系。 當然作為聯系者,當然定義中就要需要知道所有的業務邏輯類,所以在類圖中,你會發現是工廠類依賴邏輯類哦! **2、類圖** ![](https://box.kancloud.cn/2016-02-18_56c5ce7068e89.png) ## 二、工廠模式 1、工廠模式 工廠方法模式:定義一個用于創建對象的接口,讓子類決定實例化哪一個類。工廠方法使一個類的實例化延遲到其子類。 2、工廠模式的出現 簡單工廠模式通過一個工廠類實現了客戶端對具體調用類的實例化。那么大家都知道簡單工廠中的工廠類是通過客戶端傳入參數,由條件語句進行判斷后決定實例化哪個類的。那是不是您也有這樣的疑問呢?面向對象技術要做到盡可能的封裝性好,一個類修改,增刪,不影響到其他類。那在簡單工廠模式中,工廠類中要修改或增加一個操作,都必須打開這個工廠類,那么工廠類中的所有運算我就可以一覽無遺了,是不是這里就封裝不嚴了呢? 工廠類封裝不嚴怎么辦? 還是由簡單模式的二姐(還有大姐哦),工廠模式來給她完善吧! 工廠模式將面向對象理解的很到位,既然封裝不嚴,那么我們就給抽象工廠也分出一個層次了來,抽象出一個接口,然后把這些分支判斷語句轉換成一個個小的子類來實現工廠接口。是不是跟業務邏輯的封裝是如出一轍呢? 這樣我們就把原來需要再工廠類中要判斷的條件語句轉移到客戶端,雖然還得判斷需要實例化哪個,但是這些都是跟界面打交道的代碼,我們都放在客戶端中處理,不會影響到內層業務,且以后要增加運算,我們只需增加運算類,對應的指向運算類的工廠,不會干擾到其他類,這樣的業務結構是牢固的,我們所期待的。 3、類圖 ![](https://box.kancloud.cn/2016-02-18_56c5ce707e5ca.png) ## 三、抽象工廠 詳情請見上篇博客:[抽象工廠](http://blog.csdn.net/wangyongxia921/article/details/8432186)。 [作者信息](http://wyx-921.blog.163.com/)
                  <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>

                              哎呀哎呀视频在线观看