<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國際加速解決方案。 廣告
                ### 定義 使用多個簡單的對象一步一步構建成一個復雜的對象。這種類型的設計模式屬于創建型模式,它提供了一種創建對象的最佳方式。 ### 作用 將一個復雜的構建與其表示相分離,使得同樣的構建過程可以創建不同的表示。 ### 使用場景 制造汽車。 ### 優、缺點 優點: 建造者獨立,易擴展; 便于控制細節風險。 缺點: 產品必須有共同點,范圍有限制; 如內部變化復雜,會有很多的建造類。 ### 模式結構 (略) ### 示例類圖 建造者模式包含幾個角色: * Builder:抽象建造者類,規范產品的組件,一般是由子類實現。 * ConcreteBuilder:具體建造者類,實現抽象類定義的所有方法,并且返回一個組建好的對象。 * Director:指揮者(組裝者)類,負責安排已有模塊的順序,然后告訴Builder開始建造。 * Product:產品類,通常是實現了模板方法模式,也就是有模板方法和基本方法。 :-: ![](https://box.kancloud.cn/a3147c7e4318334cbbeb71fdd3ee155b_506x463.bmp) ### 示例代碼 * 產品類 (Product) ``` class Car { public $name; public $engine;//發動機 public $chassis;//底盤 public $body;//車身 public $equipment;//電器設備 public function setName($name) { $this->name = $name; } public function setEngine($engine) { $this->engine = $engine; } public function setChassis($chassis) { $this->chassis = $chassis; } public function setBody($body) { $this->body = $body; } public function setEquipment($equipment) { $this->equipment = $equipment; } public function show() { echo "名稱:".$this->name."\r\n"; echo "引擎:".$this->engine."\r\n"; echo "底盤:".$this->chassis."\r\n"; echo "車身:".$this->body."\r\n"; echo "電子設備:".$this->equipment."\r\n"; } } ``` * 抽象建造者類 (Builder) ``` interface IBuilder { public function builderName(); public function builderEngine(); public function builderChassis(); public function builderBody(); public function builderEquipment(); public function getCar(); } ``` * 具體建造者類 (ConcreteBuilder) ``` // 寶馬車builder class BMWBuilder implements IBuilder { public $car; public function __construct() { $this->car = new Car(); } public function builderName() { $this->car->setName('寶馬'); } public function builderEngine() { $this->car->setEngine('德國發動機'); } public function builderChassis() { $this->car->setChassis('超大底盤'); } public function builderBody() { $this->car->setBody('超大'); } public function builderEquipment() { $this->car->setEquipment('電子設備'); } public function getCar() { return $this->car; } } ``` ``` // 本田車builder class HondaBuilder implements IBuilder { public $car; public function __construct() { $this->car = new Car(); } public function builderName() { $this->car->setName('本田'); } public function builderEngine() { $this->car->setEngine('日本發動機'); } public function builderChassis() { $this->car->setChassis('小底盤'); } public function builderBody() { $this->car->setBody('小'); } public function builderEquipment() { $this->car->setEquipment('電子設備'); } public function getCar() { return $this->car; } } ``` * 組裝者類 (Director) ``` // 組裝者(director) class CarDirector { public function make(IBuilder $builder) { $builder->builderName(); $builder->builderEngine(); $builder->builderChassis(); $builder->builderBody(); $builder->builderEquipment(); return $builder->getCar(); } } ``` * 客戶端調用 ``` class Client { public static function main($argv) { $director = new CarDirector(); $bmwBuilder = new BMWBuilder(); $car = $director->make($bmwBuilder); $car->show(); echo "\r\n"; $hondaBuilder = new HondaBuilder(); $car = $director->make($hondaBuilder); $car->show(); } } Client::main($argv); ``` * 運行結果 ``` 名稱:寶馬 引擎:德國發動機 底盤:超大底盤 車身:超大 電子設備:電子設備 名稱:本田 引擎:日本發動機 底盤:小底盤 車身:小 電子設備:電子設備 ``` * * * * * ### 注意事項 * 與工廠模式的區別是:建造者模式更加關注與零件裝配的順序。
                  <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>

                              哎呀哎呀视频在线观看