將乙個複雜物件的建立與表示分離,使得同樣的構建過程可以建立不同的表示.
應用場景:
a.建立這個物件通常需要較多的引數,才能完整的表示該物件.
b.類的各個組成部分的具體實現類或演算法經常面臨變化,但將他們組合在一起卻相對穩定,提供一種封裝機制 將穩定的組合演算法於易變的各個組成部分隔離開來.
c.不同的建立方式或引數,可以在同乙個類上表示相對不同的物件.(如建立乙個person類,年齡小的速度快的為年輕人,年齡大的速度慢的為老年人)
為什麼需要建造者模式:
* 1.建立這個物件,通常比較複雜,需要給予過多的引數,才能完成建立.
* 2.物件的生成時可根據初始化的順序或資料不同,而生成不同角色
uml圖
示例**一:
class person示例**二:public function setspeed($speed)
public function getage()
public function getspeed()
}abstract class builder
public function getperson()
abstract public function setage();
abstract public function setspeed();
}class oldmanbuilder extends builder
public function setspeed()
}class childbuilder extends builder
public function setspeed()
}// 建造指揮者
class director
public function built()
}// 建造
$old = new oldmanbuilder(new person());
$director = new director($old);
$director->built();
$person = $old->getperson();
echo $person->getage();
class personps:建造者模式依然是建立型模式之一,依然強調的是乙個類的建立.這是它區別於外觀模式的區別.public function setage($age)
}如果我們要使該類"完整",必須呼叫setname和setage.
class builder
// 將person的多個方法都放在此方法中執行.
public function build()
public function getperson()
}// 呼叫
$build = new build(array('name' => 'php', 'age' => 10));
$build->build();
$person = $person->getperson();
Builder 建造者模式
模式定義 builder模式很好地將乙個複雜物件的建立與該物件內部的各個部件的組裝分離開來。它和 abstract factory模式有相似的地方,但是abstract factory主要提供了乙個建立一些列相關或相互依賴的物件的介面,無需知道指定他們具體的類 生產者 而builder模式著重於部件...
建造者模式(Builder)
工廠類模式提供的是建立單個類的模式,而建造者模式則是將各種產品集中起來進行管理,用來建立復合物件,所謂復合物件就是指某個類具有不同的屬性,其實建造者模式就是前面抽象工廠模式和最後的test結合起來得到的。我們看一下 還和前面一樣,乙個sender介面,兩個實現類mailsender和smssende...
建造者模式(Builder)
4 建造者模式 builder 工廠類模式提供的是建立單個類的模式,而建造者模式則是將各種產品集中起來進行管理,用來建立復合物件,所謂復合物件就是指某個類具有不同的屬性,其實建造者模式就是前面抽象工廠模式和最後的test結合起來得到的。我們看一下 建造者類如下 抽象產品類,使用了模板方法模式,不同產...