装饰器模式: 动态地给一个对象添加一些额外的职责或者行为。就增加功能来说, Decorator模式相比生成子类更为灵活。
类结构图:
php代码示例:
<?php class Person{ protected $name; function __construct($tname){ $this->name = $tname; } function Show(){ print "dressed ".($this->name)." "; } } class Finery extends Person{ protected $componet=null; function __construct(){ } function Decorate($ct){ $this -> componet = $ct; } function Show(){ if(!is_null($this -> componet)){ $this -> componet -> Show(); } } } class TShirts extends Finery{ function Show(){ print "Big T-shirt "; $this -> componet -> Show(); } } class BigTrouser extends Finery{ function Show(){ print "Big Trouser "; $this -> componet -> Show(); } } $p = new Person("Brown"); $bt = new BigTrouser(); //$ts = new TShirts(); $bt -> Decorate($p); $bt -> Show(); //$ts->Decorate($bt); //$ts->Show(); ?>