Esempio n. 1
0
        return $this->cdInfo[$song] . '.mp3';
    }
    public function playMp4($song)
    {
        return $this->cdInfo[$song] . '.mp4';
    }
}
$oldCd = new cd();
$oldCd->addSong("1");
$oldCd->addSong("2");
$oldCd->addSong("3");
$type = 'mp3';
if ($type == 'mp3') {
    echo $oldCd->playMp3(1);
} else {
    echo $oldCd->playMp4(2);
}
//委托模式-去除核心对象中的判决和复杂的功能性
//改进cd类
class cdDelegate
{
    protected $cdInfo = array();
    public function addSong($song)
    {
        $this->cdInfo[$song] = $song;
    }
    public function play($type, $song)
    {
        $obj = new $type();
        return $obj->playList($this->cdInfo, $song);
    }