<?php /*至關於抽象的產品*/ 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"/>