萬盛學電腦網

 萬盛學電腦網 >> 網絡編程 >> php編程 >> php 建造者生成器模式學習筆記

php 建造者生成器模式學習筆記

本文章來為各位整理一篇關於 php 建造者生成器模式學習筆記,希望這篇文章能夠幫助到各位朋友哦,有興趣的朋友可以進來看看的哦。

適用場景:

1、 需要生成的產品對象有復雜的內部結構。
2、 需要生成的產品對象的屬性相互依賴,生成器模式可以強迫生成順序。
3、 在對象創建過程中會使用到系統中的一些其它對象,這些對象在產品對象的創建過程中不易得到。

使用效果:

1、 生成器模式的使用使得產品的內部表象可以獨立的變化。使用生成器模式可以使客戶端不必知道產品內部組成的細節。
2、 每一個Builder都相對獨立,而與其它的Builder無關。
3、 模式所建造的最終產品更易於控制。


<?php
/**
* Created by PhpStorm.
*/
 
/**具體產品角色 車
* 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 產品類:車
*/
function Construct($_builder)
{
$_builder->BuildHead();
$_builder->BuildEngine();
$_builder->BuildTyre();
return $_builder->GetCar();
}
}

copyright © 萬盛學電腦網 all rights reserved