<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 功能強大 支持多語言、二開方便! 廣告
                11.2 建造者模式的定義 建造者模式(Builder Pattern)也叫做生成器模式,其定義如下: Separate the construction of a complex object from its representation so that the same construction process can create different representations.(將一個復雜對象的構建與它的表示分離,使得同樣的構建過程可以創建不同的表示。) 建造者模式的通用類圖如圖11-4所示。 ![](https://box.kancloud.cn/2016-08-14_57b0036237ee0.jpg) 圖11-4 建造者模式通用類圖 在建造者模式中,有如下4個角色: ● Product產品類 通常是實現了模板方法模式,也就是有模板方法和基本方法,這個參考第10章的模板方法模式。例子中的BenzModel和BMWModel就屬于產品類。 ● Builder抽象建造者 規范產品的組建,一般是由子類實現。例子中的CarBuilder就屬于抽象建造者。 ● ConcreteBuilder具體建造者 實現抽象類定義的所有方法,并且返回一個組建好的對象。例子中的BenzBuilder和BMWBuilder就屬于具體建造者。 ● Director導演類 負責安排已有模塊的順序,然后告訴Builder開始建造,在上面的例子中就是我們的老大,××公司找到老大,說我要這個或那個類型的車輛模型,然后老大就把命令傳遞給我,我和我的團隊就開始拼命地建造,于是一個項目建設完畢了。 建造者模式的通用源代碼也比較簡單,先看Product類,通常它是一個組合或繼承(如模板方法模式)產生的類,如代碼清單11-12所示。 代碼清單11-12 產品類 public?class?Product?{ ?????public?void?doSomething(){ ?????????????//獨立業務處理 ?????} } 抽象建造者如代碼清單11-13所示。 代碼清單11-13 抽象建造者 public?abstract?class?Builder?{???? ?????//設置產品的不同部分,以獲得不同的產品 ?????public?abstract?void?setPart(); ?????//建造產品 ?????public?abstract?Product?buildProduct(); } 其中,setPart方法是零件的配置,什么是零件?其他的對象,獲得一個不同零件,或者不同的裝配順序就可能產生不同的產品。具體的建造者如代碼清單11-14所示。 代碼清單11-14 具體建造者 public?class?ConcreteProduct?extends?Builder?{ ?????private?Product?product?=?new?Product(); ?????//設置產品零件 ?????public?void?setPart(){ ?????????????/* ??????????????*?產品類內的邏輯處理 ??????????????*/ ?????}?? ?????//組建一個產品 ?????public?Product?buildProduct()?{ ?????????????return?product; ?????} } 需要注意的是,如果有多個產品類就有幾個具體的建造者,而且這多個產品類具有相同接口或抽象類,參考我們上面的例子。 導演類如代碼清單11-15所示。 代碼清單11-15 導演類 public?class?Director?{ ?????private?Builder?builder?=?new?ConcreteProduct(); ?????//構建不同的產品 ?????public?Product?getAProduct(){ ?????????????builder.setPart(); ?????????????/* ??????????????*?設置不同的零件,產生不同的產品 ??????????????*/ ?????????????return?builder.buildProduct(); ?????} } 導演類起到封裝的作用,避免高層模塊深入到建造者內部的實現類。當然,在建造者模式比較龐大時,導演類可以有多個。
                  <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>

                              哎呀哎呀视频在线观看