interface Decorator{
public function display();
}
class XiaoFang implements Decorator {
private $name;
public function __construct($name){
$this->name = $name;
}
public function display(){
echo "woshi".$this->name."wochumen"."<br/>";
}
}
class Finery implements Decorator {
private $component;
public function __construct(Decorator $component){
$this->component = $component;
}
public function display(){
$this->component->display();
}
}
class Shoes extends Finery {
public function display(){
echo "穿上鞋子"."<br/>";
parent::display();
}
}
class Skirt extends Finery{
public function display(){
echo "穿上裙子"."<br/>";
parent::display();
}
}
class Fire extends Finery{
public function display(){
echo "出门前整理头发"."<br/>";
parent::display();
echo "出门后整理头发"."<br/>";
}
}
$xiaofang = new XiaoFang('小芳');
$shoes = new Shoes($xiaofang);
$shoes->display();
echo "**********************************<br/>";
$skirt = new Skirt($shoes);
$skirt->display();
echo "**********************************<br/>";
$fire = new Fire($skirt);
$fire->display();