// 抽象基类 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
*/