<?php /** 装饰模式 **/ class Person { function __construct($name) { $this->name = $name; } function show() { } function showStyle() { $this->dis .= "$this->name style"; echo $this->dis; } } abstract class Finery { protected $person; public function decorate($person) { $this->person = $person; } function show() { if($this->person) { $this->person->show(); } } } class TShirts extends Finery { function show() { $this->person->dis .= 'T-Shirt'; parent::show(); } } class BigTrouser extends Finery { function show() { $this->person->dis .= 'Big trouser'; parent::show(); } } $jam = new Person('jam'); $tshirt = new TShirts(); $bigTrouser = new BigTrouser(); $bigTrouser->decorate($jam); $tshirt->decorate($jam); $tshirt->show(); $bigTrouser->show(); $jam->showStyle(); <?php /** proxy **/ interface IAction { function givePen(); function giveCloth(); } class Pursuer implements IAction { private $schoolGril; function __construct($girl) { $this->schoolGril = $girl; } function givePen() { echo '送笔给'. $this->schoolGril->name; } function giveCloth() { echo '送衣服'. $this->schoolGril->name; } } class Proxy implements IAction { private $pursuer; function __construct(SchoolGirl $girl) { $this->pursuer = new Pursuer($girl); } function givePen() { $this->pursuer->givePen(); } function giveCloth() { $this->pursuer->giveCloth(); } } class SchoolGirl { public $name; function __construct($name) { $this->name = $name; } } $gril = new SchoolGirl('MM'); $proxy = new Proxy($gril); $proxy->givePen(); $proxy->giveCloth();
转载于:https://www.cnblogs.com/phpzxh/archive/2012/11/12/2767213.html