本文章來為各位整理一篇關(guān)于php建造者生成器模式學(xué)習(xí)筆記,希望這篇文章能夠幫助到各位朋友哦,有興趣的朋友可以進(jìn)來看看的哦.
適用場(chǎng)景:
1、需要生成的產(chǎn)品對(duì)象有復(fù)雜的內(nèi)部結(jié)構(gòu)。
2、需要生成的產(chǎn)品對(duì)象的屬性相互依賴,生成器模式可以強(qiáng)迫生成順序。
3、在對(duì)象創(chuàng)建過程中會(huì)使用到系統(tǒng)中的一些其它對(duì)象,這些對(duì)象在產(chǎn)品對(duì)象的創(chuàng)建過程中不易得到。
使用效果:
1、生成器模式的使用使得產(chǎn)品的內(nèi)部表象可以獨(dú)立的變化,使用生成器模式可以使客戶端不必知道產(chǎn)品內(nèi)部組成的細(xì)節(jié).
2、每一個(gè)Builder都相對(duì)獨(dú)立,而與其它的Builder無關(guān).
3、模式所建造的最終產(chǎn)品更易于控制.
- <?php
- /**
- * Created by PhpStorm.
- */
- /**具體產(chǎn)品角色 車
- * Class Car
- */
- class Car
- {
- public $_head;
- public $_engine;//引擎
- public $_tyre;//輪胎
- function show()
- {
- echo "車頭的顏色:{$this->_head}<br/>";
- echo "引擎的品牌:{$this->_engine}<br/>";
- echo "輪胎的品牌:{$this->_tyre}<br/>";
- }
- }
- /**抽象車的建造者(生成器)
- * Class CarBuilder
- */
- abstract class CarBuilder
- {
- protected $_car;
- function __construct()
- {
- $this->_car=new Car();
- }
- abstract function BuildHead();
- abstract function BuildEngine();
- abstract function BuildTyre();
- abstract function GetCar();
- }
- /**具體車的建造者(生成器) 寶馬
- * Class BMW
- */
- class BMW extends CarBuilder
- {
- function BuildHead()
- {
- // TODO: Implement BuilderHead() method.
- $this->_car->_head="Black";
- }
- function BuildEngine()
- {
- // TODO: Implement BuildEngine() method.
- $this->_car->_engine="BMW";
- }
- function BuildTyre()
- {
- // TODO: Implement BuildTyre() method.
- $this->_car->_tyre="BMW";
- }
- function GetCar()
- {
- // TODO: Implement GetCar() method.
- return $this->_car;
- }
- }
- /**別克
- * Class BuickBird
- */
- class BuickBird extends CarBuilder
- {
- function BuildHead()
- {
- // TODO: Implement BuildHead() method.
- $this->_car->_head="Red";
- }
- function BuildEngine()
- {
- // TODO: Implement BuildEngine() BMmethod.
- $this->_car->_engine="Buick";//
- }
- function BuildTyre()
- {
- // TODO: Implement BuildTyre() method.
- $this->_car->_tyre="Buick";
- }
- function GetCar()
- {
- // TODO: Implement GetCar() method.
- return $this->_car;
- }
- }
- /**指揮者
- * Class Director
- */
- class Director
- {
- /**
- * @param $_builder 建造者
- * @return mixed 產(chǎn)品類:車
- */
- function Construct($_builder)
- { //Vevb.com
- $_builder->BuildHead();
- $_builder->BuildEngine();
- $_builder->BuildTyre();
- return $_builder->GetCar();
- }
- }
新聞熱點(diǎn)
疑難解答