装饰器设计模式是什么?

PHP 基础面试题
0
0
分享
推荐答案
展示答案
<?php //如果已有对象的部分内容或功能性发生改变,但是不需要修改原始对象的结构,那么使用装饰器设计模式最适合。 class CD{ public $trackList; public function __construct(){ $this->trackList = []; } public function addTrack($track){ $this->trackList[] = $track; } public function getTrackList(){ $output = ''; foreach($this->trackList as $num => $track){ $output .= ($num + 1). "){$track}."; } return $output; } } $tracksFromExternalSource = ['What It Means', 'Brr', 'Goodbye']; $myCD = new CD(); foreach($tracksFromExternalSource as $track){ $myCD->addTrack($track); } class CDTrackListDecoratorCaps{ private $_cd; public function __construct($cd){ $this->_cd = $cd; } public function makeCaps(){ foreach ($this->_cd->trackList as $k => $track) { $this->_cd->trackList[$k] = strtoupper($track); } } } $myCDCaps = new CDTrackListDecoratorCaps($myCD); $myCDCaps->makeCaps(); echo "The CD contains the following tracks:".$myCD->getTrackList();

答案已隐藏