GoF定义:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
在应用程序中,一些功能基本固定,但是这些功能的组合却可能经常变化,这个时候可以将将变与不变分离开,创建和提供不同的实例。
PHP代码:
<?php
class Caller{
private $BuilderObj;
function __construct(Builder $BO){
$this->BuilderObj=$BO;
}
function ToDo(){
$this->BuilderObj->ActionA();
$this->BuilderObj->ActionB();
$this->BuilderObj->ActionC();
}
}
abstract class Builder{
abstract function ActionA();
abstract function ActionB();
abstract function ActionC();
}
class BuilderAAA extends Builder{
function ActionA(){
echo "BuilderAAA->ActionA().<br>";
}
function ActionB(){
echo "BuilderAAA->ActionB().<br>";
}
function ActionC(){
echo "BuilderAAA->ActionC().<br>";
}
}
class BuilderBBB extends Builder{
function ActionA(){
echo "BuilderBBB->ActionA().<br>";
}
function ActionB(){
echo "BuilderBBB->ActionB().<br>";
}
function ActionC(){
echo "BuilderBBB->ActionC().<br>";
}
}
(new Caller(new BuilderAAA))->ToDo();
echo "<br>";
(new Caller(new BuilderBBB))->ToDo();
?>
输出:
BuilderAAA->ActionA().
BuilderAAA->ActionB().
BuilderAAA->ActionC().
BuilderBBB->ActionA().
BuilderBBB->ActionB().
BuilderBBB->ActionC().