getDescription(); echo tagins("br"); acceptVisitor($software,$plainVisitor); echo "plain description of software: ".$plainVisitor->getDescription(); echo tagins("br"); echo tagins("br"); $fancyVisitor = new FancyDescriptionVisitor(); acceptVisitor($book,$fancyVisitor); echo "fancy description of book: ".$fancyVisitor->getDescription(); echo tagins("br"); acceptVisitor($software,$fancyVisitor); echo "fancy description of software: ".$fancyVisitor->getDescription(); echo tagins("br"); echo tagins("br"); echo "END TESTING VISITOR PATTERN"; echo tagins("br"); echo tagins("/body"); echo tagins("/html"); //double dispatch any visitor and visitee objects function acceptVisitor(Visitee $visitee_in, Visitor $visitor_in) { $visitee_in->accept($visitor_in); } //doing this so code can be displayed without breaks function tagins($stuffing) { return "<".$stuffing.">"; } ?>