php数据库简单工厂模式,PHP工厂模式之简单工厂模式

简单工厂模式(Simple Factory Pattern)

在简单工厂模式中,可以根据参数的不同返回不同类的实例。

简单工厂模式专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。

简单工厂模式包含如下角色:

Factory:工厂角色,工厂角色负责实现创建所有实例的内部逻辑

Product:抽象产品角色,抽象产品角色是所创建的所有对象的父类,负责描述所有实例所共有的公共接口

ConcreteProduct:具体产品角色,具体产品角色是创建目标,所有创建的对象都充当这个角色的某个具体类的实例。

简单工厂的命名建议:

类命名建议为“模块名称+Factory”,比如,用户模块的工厂就称为UserFactory

方法名称通常为“get+接口名称”或者是“create+接口名称”。比如用户接口名称为UserEbi,那么方法名称通常为getUserEbi或者createUserEbi。

代码实现

1,定义一个接口类

namespace app\lib\people;

interface people{

function getName();

function getAge();

}

2,定义学生工厂类

class StudentFactory implements people{

protected $_name;

protected $_age;

public function __construct($name, $age){

$this->_name = '小明同学';

$this->_age = ''8";

}

public function getName(){

return $this->_name;

}

public function getAge(){

return $this->_age;

}

}

3,定义一个老师工厂类

class TeacherFactory implements people{

protected $_name;

protected $_age;

function __construct(){

$this->_name = '小明老师';

$this->_age = ''28";

}

function getName(){

return $this->_name;

}

function getAge(){

return $this->_age;

}

}

还可以创建多个工厂类,例如清洁工工作类,保安工厂类,校长工厂类等等

4,创建总工厂类,专门用做类的创建

class Factory

{

public static function build($className = null)

{

$className = ucfirst($className);

if ($className && class_exists($className)) {

return new $className();

}

return null;

}

控制器调用工厂方法

//获得老师的名字

echo Factory::build("teacher")->getName(); #输出 小明老师

//获得学生的名字

echo Factory::build("student")->getName(); #输出 小明同学

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值