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

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                ## 一、建造者模式 將一個復雜的對象的構建與它的表示分離,使得同樣的構建過程可以創建不同的表示。 ### 建造模式的出現 **引子** > 借用書上的例子,那炒菜(西紅柿雞蛋)來說,我們需要的原材料有:雞蛋,西紅柿;基本調料:油,鹽/糖,蔥花。 > 每次我們都需要重復這樣的操作,可悲的是,盡管調料,材料都很少,廚師還是會出現忘記加鹽,或者蔥花的情況。怎么辦? > 為了解決這個問題,我們來分析一下,這些東西都是做菜不可缺少的東西,我們可以給這個菜制定一個流程,每次都按照這個流程去做,這樣就不會忘記。 > 當然有的人胃口比較重,需要多加鹽,有的人喜歡吃甜的,那我們就需要加一樣調料:糖。針對這些具體的細節要求,我們需要有在做菜前有一個說明,告訴廚師多加鹽,或者放糖,不放鹽。 把這個模式放到編程的世界就是建造者模式。 來類比一下: <table border="1" cellspacing="0" cellpadding="0" valign="top" style="border-bottom:#a3a3a3 1pt solid; border-left:#a3a3a3 1pt solid; border-collapse:collapse; direction:ltr; margin-left:0.333in; border-top:#a3a3a3 1pt solid; border-right:#a3a3a3 1pt solid"><tbody><tr><td style="border-bottom:#a3a3a3 1pt solid; border-left:#a3a3a3 1pt solid; padding-bottom:4pt; padding-left:4pt; width:1.202in; padding-right:4pt; vertical-align:top; border-top:#a3a3a3 1pt solid; border-right:#a3a3a3 1pt solid; padding-top:4pt"><p style="margin:0in; font-family:SimSun; font-size:14pt">生活</p></td><td style="border-bottom:#a3a3a3 1pt solid; border-left:#a3a3a3 1pt solid; padding-bottom:4pt; padding-left:4pt; width:1.211in; padding-right:4pt; vertical-align:top; border-top:#a3a3a3 1pt solid; border-right:#a3a3a3 1pt solid; padding-top:4pt"><p style="margin:0in; font-family:SimSun; font-size:14pt">西紅柿流程</p></td><td style="border-bottom:#a3a3a3 1pt solid; border-left:#a3a3a3 1pt solid; padding-bottom:4pt; padding-left:4pt; width:0.813in; padding-right:4pt; vertical-align:top; border-top:#a3a3a3 1pt solid; border-right:#a3a3a3 1pt solid; padding-top:4pt"><p style="margin:0in; font-family:SimSun; font-size:14pt">說明</p></td><td style="border-bottom:#a3a3a3 1pt solid; border-left:#a3a3a3 1pt solid; padding-bottom:4pt; padding-left:4pt; width:1.3in; padding-right:4pt; vertical-align:top; border-top:#a3a3a3 1pt solid; border-right:#a3a3a3 1pt solid; padding-top:4pt"><p style="margin:0in; font-family:SimSun; font-size:14pt">加鹽西紅柿</p></td><td style="border-bottom:#a3a3a3 1pt solid; border-left:#a3a3a3 1pt solid; padding-bottom:4pt; padding-left:4pt; width:1.34in; padding-right:4pt; vertical-align:top; border-top:#a3a3a3 1pt solid; border-right:#a3a3a3 1pt solid; padding-top:4pt"><p style="margin:0in; font-family:SimSun; font-size:14pt">加糖西紅柿</p></td></tr><tr><td style="border-bottom:#a3a3a3 1pt solid; border-left:#a3a3a3 1pt solid; padding-bottom:4pt; padding-left:4pt; width:1.202in; padding-right:4pt; vertical-align:top; border-top:#a3a3a3 1pt solid; border-right:#a3a3a3 1pt solid; padding-top:4pt"><p style="margin:0in; font-family:SimSun; font-size:14pt">建造者模式</p></td><td style="border-bottom:#a3a3a3 1pt solid; border-left:#a3a3a3 1pt solid; padding-bottom:4pt; padding-left:4pt; width:1.211in; padding-right:4pt; vertical-align:top; border-top:#a3a3a3 1pt solid; border-right:#a3a3a3 1pt solid; padding-top:4pt"><p style="margin:0in; font-family:SimSun; font-size:14pt">建造者</p></td><td style="border-bottom:#a3a3a3 1pt solid; border-left:#a3a3a3 1pt solid; padding-bottom:4pt; padding-left:4pt; width:0.813in; padding-right:4pt; vertical-align:top; border-top:#a3a3a3 1pt solid; border-right:#a3a3a3 1pt solid; padding-top:4pt"><p style="margin:0in; font-family:SimSun; font-size:14pt">指揮者</p></td><td style="border-bottom:#a3a3a3 1pt solid; border-left:#a3a3a3 1pt solid; padding-bottom:4pt; padding-left:4pt; width:1.3in; padding-right:4pt; vertical-align:top; border-top:#a3a3a3 1pt solid; border-right:#a3a3a3 1pt solid; padding-top:4pt"><p style="margin:0in; font-size:14pt"><span lang="zh-CN" style="font-family:SimSun">建造者子類</span><span lang="en-US" style="font-family:Calibri">1</span></p></td><td style="border-bottom:#a3a3a3 1pt solid; border-left:#a3a3a3 1pt solid; padding-bottom:4pt; padding-left:4pt; width:1.34in; padding-right:4pt; vertical-align:top; border-top:#a3a3a3 1pt solid; border-right:#a3a3a3 1pt solid; padding-top:4pt"><p style="margin:0in; font-size:14pt"><span lang="zh-CN" style="font-family:SimSun">建造者子類</span><span lang="en-US" style="font-family:Calibri">2</span></p></td></tr></tbody></table> 建造者模式把一個對象的基本構建給造出來,然后根據修飾細節的不同再進行擴展創建。 注意: 1、所有的擴展子類都必須實現父類——保證建造的初衷不變。 2、子類的擴展時對父類的細節修飾——不是實質改變 ## 二、類圖 ![](https://box.kancloud.cn/2016-02-18_56c5ce70d2b5e.png) 從圖中可以看出,具體的實現是CreateeBuilder來完成的,而CreateBulider之間具體的不同又是依賴現實生活中的東西Things來體現的。
                  <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>

                              哎呀哎呀视频在线观看