/*相当于抽象的产品*/
abstract class Person{
public $head;
public $body;
public $foot;
public function __get($property_name){
if(isset($property_name)){
return $property_name;
}
}
public function __set($property_name,$value){
$this->$property_name = $value;
}
}
/*具体的产品*/
class Man extends Person{
}
/*抽象的工厂*/
interface PersonBuilder{
function BuildHead();
function BuildBody();
function BuildFoot();
function BuildPerson();
}
/*具体化了的生产用的工厂*/
class ManBuilder implements PersonBuilder{
public $man;
function __construct(){
$this->man = new Man();
}
function BuildHead(){
$this->man->head = "建造了男人的头";
}
function BuildBody(){
$this->man->body = "建造了男人的身体";
}
function BuildFoot(){
$this->man->foot = "建造了男人的脚";
}
function BuildPerson(){
return $this->man;
}
}
function ConstractPerson($personbuilder){
$personbuilder->BuildHead();
$personbuilder->BuildBody();
$personbuilder->BuildFoot();
return $personbuilder->BuildPerson();
}
function Client(){
$manbuilder = new ManBuilder();
$man = ConstractPerson($manbuilder);
echo $man->head."<br/>";
echo $man->body."<br/>";
echo $man->foot."<br/>";
}
?>
<?php
Client();
?>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/>