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]