<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] ## 概述 亦稱: 克隆、 Clone、 Prototype <br/> - **原型模式**是一種創建型設計模式,使你能夠復制已有對象,而又無需使代碼依賴它們所屬的類。 - 相比正常創建一個對象 (new Foo () ),首先創建一個原型,然后克隆它會更節省開銷。 ## 原型模式結構 1. **原型**(Prototype)接口將對克隆方法進行聲明。在絕大多數情況下,其中只會有一個名為`clone`克隆的方法。 2. **具體原型**(Concrete Prototype)類將實現克隆方法。除了將原始對象的數據復制到克隆體中之外,該方法有時還需處理克隆過程中的極端情況,例如克隆關聯對象和梳理遞歸依賴等等。 3. **客戶端**(Client)可以復制實現了原型接口的任何對象。 ![](https://img.kancloud.cn/e8/30/e8306d51fac497fd182b30235b56d1c4_1000x800.png) **偽代碼** ![](https://img.kancloud.cn/45/70/457013e43363ed6a35c6e8c8790e7bf8_940x660.png) ## 原型模式適合應用場景 1. 如果你需要復制一些對象, 同時又希望代碼獨立于這些對象所屬的具體類, 可以使用原型模式。 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>

                              哎呀哎呀视频在线观看