liuming794 发表于 2017-3-21 13:10:37

php 简单工厂

<?php   
//抽象基类User   
abstract class User   
{   
protected $name = NULL;   
//构造函数   
function User($name)   
{   
$this->name = $name;         //将属性name设置成创建对象时传入的参数   
}   
//获取属性$name   
function getName()   
{   
return $this->name;            //返回name属性   
}   
//是否具有浏览权限   
function ViewAccess()   
{   
return "No";                        //抽象基类的浏览权限为No   
}   
//是否具有编辑权限   
function EditAccess()   
{   
return "No";                        //抽象基类的编辑权限为No   
}   
//是否具有删除权限   
function DeleteAccess()   
{   
return "No";                        //抽象基类的删除权限为No   
}      
//是否具有用户管理权限   
function ManageAccess()   
{   
return "No";                        //抽象基类的管理权限为No   
}   
}   
//普通用户   
class Client extends User   
{   
//重写ViewAccess函数,对普通用户授予浏览权限   
function ViewAccess()   
{   
return "Yes";   
}   
}   
//管理员   
class Administrator extends User   
{   
//重写ViewAccess函数,对普通用户授予浏览权限   
function ViewAccess()   
{   
return "Yes";   
}   
//重写EditAccess函数,对普通用户授予编辑权限   
function EditAccess()   
{   
return "Yes";   
}   
//重写DeleteAccess函数,对普通用户授予删除权限   
function DeleteAccess()   
{   
return "Yes";   
}   
}   
//维护人员   
class Supporter extends User   
{   
//重写ViewAccess函数,对普通用户授予浏览权限   
function ViewAccess()   
{   
return "Yes";   
}   
//重写EditAccess函数,对普通用户授予编辑权限   
function EditAccess()   
{   
return "Yes";   
}   
//重写DeleteAccess函数,对普通用户授予删除权限   
function DeleteAccess()   
{   
return "Yes";   
}   
//重写ManageAccess函数,对普通用户授予管理权限   
function ManageAccess()   
{   
return "Yes";   
}   
}   
//工厂类   
class Factory   
{   
//静态成员属性   
private static $users = array("Simon"=>"Client", "Elaine"=>"Administrator", "Bob"=>"Supporter");   
//创建对象的成员方法   
static function Create($name)   
{   
//根据成员属性的不同创建不同的对象   
switch (self::$users[$name])   
{   
case "Client":   
return new Client($name);   
case "Administrator":   
return new Administrator($name);   
case "Supporter":   
return new Supporter($name);   
}   
}   
}   
//一个存放用户名的数组   
$users = array("Elaine", "Simon", "Bob");   
//对于每个用户分析其权限   
foreach($users as $user)   
{   
$obj = Factory::Create($user);                  //创建对象   
echo $obj->getName() . "的权限:\n";   
echo "浏览:".$obj->ViewAccess()."\n";          //输出浏览权限   
echo "修改:".$obj->EditAccess()."\n";          //输出修改权限   
echo "删除:".$obj->DeleteAccess()."\n";            //输出删除权限   
echo "管理:".$obj->ManageAccess()."\n";            //输出管理权限   
}   
?>
  本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/zhuzhao/archive/2009/03/06/3964456.aspx
页: [1]
查看完整版本: php 简单工厂