一,建造者模式,也叫做生成器模式,是创建设计模式的一种,它能将一个复杂的对象的创建过程分离开来,使你能够分步骤的创建对象。建造者模式也允许你使用相同的建造代码创造出不同类型和形式的对象。
建造者模式一般包括四个角色文章来源:https://www.toymoban.com/news/detail-616399.html
- 产品角色,产品角色定义自身的组成属性
- 抽象建造者,抽象建造者定义了产品的创建过程以及如何返回一个产品,所规范的方法中必须包括建造方法和结果返回方法
- 具体建造者,具体建造者实现了抽象建造者创建产品过程的方法,给产品的具体属性进行赋值定义
- 指挥者,指挥者负责与调用客户端交互,决定创建什么样的产品
二,例子文章来源地址https://www.toymoban.com/news/detail-616399.html
//产品角色
class Product
{
private $name;
private $color;
public function name($name): void
{
$this->name=$name;
}
public function color($color): void
{
$this->color=$color;
}
}
//抽象建造者角色
abstract class AbstractBuilder
{
protected $product;
//可以放到具体建造者中实现
function __construct()
{
$this->product = new Product();
}
public abstract function setName();
public abstract function setColor();
//可以放到具体建造者中实现
public function getResult()
{
return $this->product;
}
}
//具体建造者A
class BuilderA extends AbstractBuilder
{
public function setName()
{
$this->product->name('产品A');
}
public function setColor()
{
$this->product->color('黑色');
}
}
//具体建造者B
class BuilderB extends AbstractBuilder
{
public function setName()
{
$this->product->name('产品B');
}
public function setColor()
{
$this->product->color('白色');
}
}
//指挥者/导演者/构造器
class Director
{
public function make(AbstractBuilder $builder)
{
$builder->setName();
$builder->setColor();
return $builder->getResult();
}
}
//客户端
$director = new Director;
$builderA = new BuilderA();
$res1=$director->make($builderA);
var_dump($res1);
$builderB = new BuilderB();
$res2=$director->make($builderB);
var_dump($res2);
到了这里,关于php建造者模式的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!