您的位置:首页 > 编程语言 > PHP开发

PHP设计模式系列(八):建造者模式

2017-04-29 21:44 591 查看

建造者模式

建造者模式(Builder Pattern):将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。

建造者模式是一步一步创建一个复杂的对象,它允许用户只通过指定复杂对象的类型和内容就可以构建它们,用户不需要知道内部的具体构建细节。建造者模式属于对象创建型模式。根据中文翻译的不同,建造者模式又可以称为生成器模式。

模式结构

建造者模式包含如下角色:

Builder:抽象建造者

ConcreteBuilder:具体建造者

Director:指挥者

Product:产品角色

结构图



PHP代码实现

<?php
/**
* 建造者模式
*/
//Product:产品角色
class Product
{
public function Add($part){
$this->parts[]=$part;
}
public function show(){
var_dump('产品创建');
foreach ($this->parts as $part){
var_dump($part);
}
}
}

//Builder:抽象建造者
interface Builder
{
public function BuildPartA();
public function BuildPartB();
public function GetResult();
}

//ConcreteBuilder:具体建造者
class ConcreteBuilder1 implements Builder
{
public function __construct(){
$this->product=new Product();
}
public function BuildPartA()
{
$this->product->Add('部件A');
}
public function BuildPartB()
{
$this->product->Add('部件B');
}
public function GetResult()
{
return $this->product;
}
}
class ConcreteBuilder2 implements Builder
{
public function __construct(){
$this->product=new Product();
}
public function BuildPartA()
{
$this->product->Add('部件X');
}
public function BuildPartB()
{
$this->product->Add('部件Y');
}
public function GetResult()
{
return $this->product;
}
}

//Director:指挥者
class Director
{
public function Construct($builder){
$builder->BuildPartA();
$builder->BuildPartB();
}
}

$a=new Director();
$b1=new ConcreteBuilder1();
$b2=new ConcreteBuilder2();

$a->Construct($b1);
$p1=$b1->GetResult();
$p1->show();

$a->Construct($b2);
$p2=$b2->GetResult();
$p2->show();


运行结果

string '产品创建' (length=12)
string '部件A' (length=7)
string '部件B' (length=7)
string '产品创建' (length=12)
string '部件X' (length=7)
string '部件Y' (length=7)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息