本文参看php 设计模式 之 访问者模式.
visitVip($this);
}
}
class NormalUser extends User
{
//同上的getPoint()具体实现就由接口中实现了
//同VipUser类中的accept
public function accept(UserVisitor $vitor)
{
$vitor->visitNormal($this);
}
}
//定义访问者接口
abstract class UserVisitor
{
//访问者必须要实现的访问不同用户的接口方法
abstract function visitVip(User $user);
abstract function visitNormal(User $user);
}
//积分操作的访问者实现
class PointActVisitor extends UserVisitor
{
public function visitVip(User $user)
{
echo 'Vip用户+10分 ';
}
public function visitNormal(User $user)
{
echo 'Normal用户+5分';
}
}
//用户的树形结构
class Users
{
protected $users;
public function addUser(User $user)
{
$this->users[] = $user;
}
//让所有的用户都能被访问者访问
public function handleVisitor(UserVisitor $visitor)
{
foreach($this->users as $user)
{
$user->accept($visitor);
}
}
}
$pointVisitor = new PointActVisitor();
$users = new Users();
$users->addUser(new VipUser()); //添加新用户
$users->addUser(new NormalUser());
$users->addUser(new NormalUser());
$users->handleVisitor($pointVisitor);
以上就介绍了18php访问者模式,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。