PHP设计模式之工厂模式(权限分配)
// 抽象基类 User abstract class User{ protected $name = NULL; // 构造函数 function User($name){ $this->name = $name; } // 获取属性$name function getName(){ return $this->name; } // 浏览权限 function ViewAccess(){ return "No"; } // 编辑权限 function EditAccess(){ return "No"; } // 删除权限 function DeleteAccess(){ return "No"; } // 管理权限 function ManageAccess(){ return "No"; } } // 普通用户 class Client extends User{ function ViewAccess(){ return "Yes"; } } // 编辑 class Manager extends User{ function ViewAccess(){ return "Yes"; } function EditAccess(){ return "Yes"; } } // 管理员 class Administrator extends User{ function ViewAccess(){ return "Yes"; } function EditAccess(){ return "Yes"; } function DeleteAccess(){ return "Yes"; } } // 技术人员 class Supporter extends User{ function ViewAccess(){ return "Yes"; } function EditAccess(){ return "Yes"; } function DeleteAccess(){ return "Yes"; } function ManageAccess(){ return "Yes"; } } // 工厂类 class Factory{ // 静态成员属性 private static $users = array("Simon"=>"Client", "Elaine"=>"Administrator", "Bob"=>"Supporter", "Tom"=>"Manager"); // 创建对象的成员方法 static function Create($name){ //根据成员属性的不同创建不同的对象 switch (self::$users[$name]){ case "Client": return new Client($name); case "Manager": return new Manager($name); case "Administrator": return new Administrator($name); case "Supporter": return new Supporter($name); } } } // 一个存放用户名的数组 $users = array("Elaine", "Simon", "Bob", "Tom"); // 对于每个用户分析其权限 foreach($users as $user){ $obj = Factory::Create($user); echo PHP_EOL.$obj->getName(),'的权限',PHP_EOL; echo '浏览:',$obj->ViewAccess(),PHP_EOL; echo '修改:',$obj->EditAccess(),PHP_EOL; echo '删除:',$obj->DeleteAccess(),PHP_EOL; echo '管理:',$obj->ManageAccess(),PHP_EOL; } /* 结果: Elaine的权限 浏览:Yes 修改:Yes 删除:Yes 管理:No Simon的权限 浏览:Yes 修改:No 删除:No 管理:No Bob的权限 浏览:Yes 修改:Yes 删除:Yes 管理:Yes Tom的权限 浏览:Yes 修改:Yes 删除:No 管理:No */