php之大话代理模式

来源:互联网 发布:墙面互动投影软件 编辑:程序博客网 时间:2024/06/05 18:44

函数


<meta charset='utf-8'><?phpfunction im_GiveGift(){return array('GiveFlowers' => function() {die('接口未定义');},'GiveChocolate' => function() { die('接口未定义');},);}function SchoolGirl(Array $data){extract($data);return array('Name' => function() use($name){return $name;});}function Pursuit($mm){return array_merge(im_GiveGift(),array('GiveFlowers' => function() use($mm){echo $mm['Name']().' 送你鲜花<br/>';},'GiveChocolate' => function() use($mm){echo $mm['Name']().' 送你巧克力<br/>';},));}function Proxy($mm){$gg = Pursuit($mm);return array_merge(im_GiveGift(),array(im_GiveGift(),'GiveFlowers' => function() use($gg){$gg['GiveFlowers']();},'GiveChocolate' => function() use($gg){$gg['GiveChocolate']();},));}$jiaojiao = SchoolGirl(array('name' => 'jiaojiao'));$daili = Proxy($jiaojiao);$daili['GiveFlowers']();$daili['GiveChocolate']();/* c_daili.php */  
面向对象


<meta charset='utf-8'><?php//送礼物interface GiveGift{function GiveFlowers();function GiveChocolate();}class SchoolGirl{private $name;public function Name($value = ''){if ($value !== '') $this->name = $value;return $this->name;}}class Pursuit implements GiveGift{private $mm = Null;public function __construct(SchoolGirl $mm){$this->mm = $mm;}public function GiveFlowers(){echo $this->mm->Name(),' 送你鲜花<br/>';}public function GiveChocolate(){echo $this->mm->Name(),' 送你巧克力<br/>';}}class Proxy implements GiveGift{private $gg = Null;  //Pursuitpublic function __construct(SchoolGirl $mm){$this->gg = new Pursuit($mm);}public function GiveFlowers(){$this->gg->GiveFlowers();}public function GiveChocolate(){$this->gg->GiveChocolate();}}$jiaojiao = new SchoolGirl();$jiaojiao->Name('jiaojiao');$daili = new Proxy($jiaojiao);$daili->GiveFlowers();$daili->GiveChocolate(); /* c_daili,php */