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

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                [TOC] ## 概述 亦稱:虛擬構造函數、Virtual Constructor、Factory Method <br/> 工廠方法模式建議使用特殊的工廠方法代替對于對象構造函數的直接調用 ## 工廠方法模式結構 **產品 (Product)** 將會對接口進行聲明。 對于所有由創建者及其子類構建的對象, 這些接口都是通用的 **具體產品 (Concrete Products)** 是產品接口的不同實現。 **創建者 (Creator)** 類聲明返回產品對象的工廠方法。 該方法的返回對象類型必須與產品接口相匹配。 **具體創建者 (Concrete Creators)** 將會重寫基礎工廠方法, 使其返回不同類型的產品。 >[info] 工廠方法需要有抽象產品,和抽象創建者 ### 圖示 ![](blob:http://www.hmoore.net/7d6c31e6-007a-4497-91e7-2aede197cd57) ### 示例 ![](blob:http://www.hmoore.net/0ad42219-88b2-44ab-bdcd-b56ad9f96c3f) ## 工廠方法模式適合應用場景 1. 當你在編寫代碼的過程中, 如果無法預知對象確切類別及其依賴關系時, 可使用工廠方法。 2. 如果你希望用戶能擴展你軟件庫或框架的內部組件, 可使用工廠方法。 3. 如果你希望復用現有對象來節省系統資源, 而不是每次都重新創建對象, 可使用工廠方法。 ## 工廠方法模式優缺點 **優點** 1. 你可以避免創建者和具體產品之間的緊密耦合。 2. 單一職責原則。 你可以將產品創建代碼放在程序的單一位置, 從而使得代碼更容易維護。 3. 開閉原則。 無需更改現有客戶端代碼, 你就可以在程序中引入新的產品類型。 **缺點** 1. 應用工廠方法模式需要引入許多新的子類, 代碼可能會因此變得更復雜。 最好的情況是將該模式引入創建者類的現有層次結構中。
                  <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>

                              哎呀哎呀视频在线观看