PHP中工厂模式(factory pattern):指的是在PHP中创建一个类似于工厂的类,通过对类中成员方法的调用返回不同类型的对象。
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”;
}
//是否具有编辑权限
function EditAccess()
{
return “NO”;
}//是否具有删除权限
function DeleteAccess()
{
return “NO”;
}
//是否具有管理权限
function ManageAccess()
{
return “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(“php”=>”Client”,”www.phpdo.net”=>”Administrator”,”phpdo”=>”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(“php”,”www.phpdo.net”,”phpdo”);
//对于每个用户分析其权限
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”;
}
?>
结果:
PHP的权限: 浏览: YES 修改:NO 删除:NO 管理:NO
www.phpdo.net的权限: 浏览: YES 修改:YES 删除:YES 管理:NO
phpdo的权限: 浏览: YES 修改:YES 删除:YES 管理:YES











最新评论
博主的文章确实很受用 收藏一
对于大量的草根用户,在他们厌
对于大量的草根用户,在他们厌
收藏了,谢谢教程。 :raz
不错啊7rh7nd,是原创的
一转眼又一年了,改写年终总结
看了半天都不是很明白。
PHP 不支持那些啊
呵呵,都是这样的了,纠结这问