建造者模式
介紹
建造者模式又名生成器模式,是一種物件構建模式,它可以將復雜物件的建造程序抽象出來(抽象類別),使這個抽象程序的不同實作方法可以構造出不同表現(屬性)的物件,
建造者模式是一步一步創建一個復雜的物件,它允許用戶只通過指定復雜物件的型別和內容就可以構建它們,用戶不需要知道內部的具體構建細節,例如,一輛汽車由輪子,發動機以及其他零件組成,對于普通人而言,我們使用的只是一輛完整的車,這時,我們需要加入一個構造者,讓他幫我們把這些組件按序組裝成為一輛完整的車,
UML圖

UML圖說明
- Builder:抽象構造者類,為創建一個Product物件的各個部件指定抽象介面,
- ConcreteBuilder:具體構造者類,實作Builder的介面以構造和裝配該產品的各個部件,定義并明確它所創建的表示,提供一個檢索產品的介面
- Director:指揮者,構造一個使用Builder介面的物件,
- Product:表示被構造的復雜物件,ConcreateBuilder創建該產品的內部表示并定義它的裝配程序,
包含定義組成部件的類,包括將這些部件裝配成最終產品的介面,
實作示例
<?php
/**
* chouxiang builer
*/
abstract class Builder
{
protected $car;
abstract public function buildPartA();
abstract public function buildPartB();
abstract public function buildPartC();
abstract public function getResult();
}
class CarBuilder extends Builder
{
function __construct()
{
$this->car = new Car();
}
public function buildPartA(){
$this->car->setPartA('發動機');
}
public function buildPartB(){
$this->car->setPartB('輪子');
}
public function buildPartC(){
$this->car->setPartC('其他零件');
}
public function getResult(){
return $this->car;
}
}
class Car
{
protected $partA;
protected $partB;
protected $partC;
public function setPartA($str){
$this->partA = $str;
}
public function setPartB($str){
$this->partB = $str;
}
public function setPartC($str){
$this->partC = $str;
}
public function show()
{
echo "這輛車由:".$this->partA.','.$this->partB.',和'.$this->partC.'組成';
}
}
class Director
{
public $myBuilder;
public function startBuild()
{
$this->myBuilder->buildPartA();
$this->myBuilder->buildPartB();
$this->myBuilder->buildPartC();
return $this->myBuilder->getResult();
}
public function setBuilder(Builder $builder)
{
$this->myBuilder = $builder;
}
}
$carBuilder = new CarBuilder();
$director = new Director();
$director->setBuilder($carBuilder);
$newCar = $director->startBuild();
$newCar->show();
?>
以上是文章全部內容,有需要學習交流的友人請加入交流群的咱們一起,有問題一起交流,一起進步!前提是你是學技術的,感謝閱讀!
點此加入該群
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/103750.html
標籤:PHP
