现在的位置: 首页php-基础语法>正文
PHP编程的设计概念(3)——工厂模式  
发表于662 天前 php-基础语法 暂无评论

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

给我留言


/ 快捷键:Ctrl+Enter
不想听你唠叨×