<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 功能強大 支持多語言、二開方便! 廣告
                [TOC] ## 概述 亦稱:建造者模式、Builder <br/> **生成器模式**是一種創建型設計模式, 使你能夠分步驟創建復雜對象。 該模式允許你使用相同的創建代碼生成不同類型和形式的對象。 ## 使用場景 如房子可以配備很多設施,但是并非所有設施都是必須. ![](https://img.kancloud.cn/91/9d/919db1b44e3d4eb1d72179a7244eeb31_1200x700.png) >[danger] 對于構造函數的調用十分不簡潔 ## 解決方案 ![](https://img.kancloud.cn/ca/4d/ca4d6b4afe624d006a985bcfcd48faf1_820x560.png) ## 生成器模式結構 1. **生成器 (Builder)** 接口聲明在所有類型生成器中通用的產品構造步驟。 2. **具體生成器 (Concrete Builders)** 提供構造過程的不同實現。 具體生成器也可以構造不遵循通用接口的產品。 3. **產品 (Products)** 是最終生成的對象。 由不同生成器構造的產品無需屬于同一類層次結構或接口。 4. **主管 (Director)** 類定義調用構造步驟的順序, 這樣你就可以創建和復用特定的產品配置。 5. **客戶端 (Client)** 必須將某個生成器對象與主管類關聯。 一般情況下, 你只需通過主管類構造函數的參數進行一次性關聯即可。 此后主管類就能使用生成器對象完成后續所有的構造任務。 但在客戶端將生成器對象傳遞給主管類制造方法時還有另一種方式。 在這種情況下, 你在使用主管類生產產品時每次都可以使用不同的生成器。 ![](https://img.kancloud.cn/ee/be/eebe675b7ed0d040075bb9cf6ee52641_920x1160.png) 偽代碼 ![](https://img.kancloud.cn/68/8b/688b97f44878178677a2f349f870b91f_1000x1180.png) ## 生成器模式適合應用場景 - 使用生成器模式可避免 “重疊構造函數 (telescopic constructor)” 的出現。 ``` // 重疊構造函數就是構造函數重載 class Pizza { Pizza(int size) { ... } Pizza(int size, boolean cheese) { ... } Pizza(int size, boolean cheese, boolean pepperoni) { ... } ``` - 當你希望使用代碼創建不同形式的產品 (例如石頭或木頭房屋) 時, 可使用生成器模式 - 使用生成器構造組合樹或其他復雜對象。 ## 與其他模式的關系 - 在許多設計工作的初期都會使用工廠方法模式 (較為簡單, 而且可以更方便地通過子類進行定制), 隨后演化為使用抽象工廠模式、 原型模式或生成器模式 (更靈活但更加復雜)。 - 生成器重點關注如何分步生成復雜對象。 抽象工廠專門用于生產一系列相關對象。 抽象工廠會馬上返回產品, 生成器則允許你在獲取產品前執行一些額外構造步驟。 - 你可以在創建復雜組合模式樹時使用生成器, 因為這可使其構造步驟以遞歸的方式運行。 - 你可以結合使用生成器和橋接模式: 主管類負責抽象工作, 各種不同的生成器負責實現工作。 - 抽象工廠、 生成器和原型都可以用單例模式來實現。
                  <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>

                              哎呀哎呀视频在线观看