band = $band;        $this->title = $title;        $this->price = $price;    }    public function buy(){        echo 'a customer is buying'.PHP_EOL;    }    public function acceptVisitor($visitor){        $visitor->visitCD($this);    }}class CDVisitiorLogPurchase{    public function visitCD($cd){        $logline = "{$cd->title} by {$cd->band} was purchased for {$cd->price} ";        $logline .= 'at '.date('Y-m-d H:i:s').PHP_EOL;        echo $logline;    }}class CDVisitorPopulateDiscountList{    public function visitCD($cd){        if($cd->price < 10){            $this->_populateDiscountList($cd);        }    }    protected function _populateDiscountList($cd){        echo 'populateDiscountList was visited'.PHP_EOL;    }}$externalBand = 'TFBOYS';$externalTitle = 'zuoshouyoushou';$externalPrice = 7;$cd = new CD($externalBand, $externalTitle, $externalPrice);$cd->buy();$cd->acceptVisitor(new CDVisitiorLogPurchase());$cd->acceptVisitor(new CDVisitorPopulateDiscountList());//当需要的对象包含以标准方式应用于某个对象的算法时,最佳的做法是使用访问者设计模式。