作者:LAMP小白 点击:1775 发布日期:2012-10-05 23:49:00 返回列表
如果已有对象的部分内容或功能发生改变,但是不需要修稿原始对象的结构,那么是用装饰器模式最适合
装饰器模式适用于以下场合:变化是快速而细小的,而且几乎不影响应用程序的其余部分,不必重写任何已有的功能性,而是对某个基对象应用增量变化
在主代码流中应当能够直接插入一个活多个更改或装饰目标对象的装饰器,而不影响其他代码流
class cd { public $trackList; public function __construct() { $this-mio_gt;trackList = array(); } public function addTrack($track) { $this-mio_gt;trackList[] = $track; } public function getTrackList() { $outPut = array(); foreach($this-mio_gt;trackList as $num =mio_gt; $track){ $outPut[] = ($num + 1).") {$track}mio_lt;br /mio_gt;"; } return $outPut; } } class CDTrackCaps { private $_cd; public function __construct($cd) { $this-mio_gt;_cd = $cd; } public function makeCaps() { foreach($this-mio_gt;_cd-mio_gt;trackList as mio_amp;$track) $track = strtoupper($track); } } $trackList = array('haha', 'hehe', 'heihei'); $myCD = new cd(); foreach($trackList as $v) $myCD-mio_gt;addTrack($v); $myCDCaps = new CDTrackCaps($myCD); $myCDCaps-mio_gt;makeCaps(); echo 'mio_lt;premio_gt;'; var_dump($myCD-mio_gt;getTrackList()); echo 'mio_lt;/premio_gt;';
上一篇:数据访问对象模式 下一篇:快递查询API