您的位置:首页 > 其它

设计模式:二

2016-03-03 10:22 316 查看
php面向对象设计模式中,工厂模式,从字面中就能够以理解为,工厂模式就是在不改变原来代码的结构的基础上,依据需求的添加类定义去完毕

<?

php
header("Content-Type:text/html; charset=utf8");

/**
* php设计模式
* 二:工厂模式
*
*/

// 定义接口DB类
interface DB{
function conn();
}

class dbmysql implements DB{
public function conn(){
echo 'mysql连接成功<br />';
}
}

class dbSqlServer implements Db{
public function conn(){
echo 'Sqlserver连接成功';
}
}

// 定义一个工厂接口
interface Factory{
function createDB();
}

//定义创建数据接口

class GetMysqlFactory implements Factory{

public function createDB(){
return new dbmysql();
}
}

class GetSqlServer implements Factory{

public function createDB(){
return new dbSqlServer();
}
}

$facMysql = new GetMysqlFactory(); // 获得创建mysql的工厂类

$mysql = $facMysql->createDB(); // 通过mysql工厂对象创建一个mysql对象

$mysql->conn();     //mysql连接成功

$facMysql = new GetSqlServer(); // 获得sqlServer工厂类

$mysql = $facMysql->createDB();// 通过Sqlserver工厂对象创建一个sqlServer对象

$mysql->conn();     //sqlServer连接成功


定义了两个接口类, 事实上定义接口类的主要作用, 能够起到约束作用,更规范 .

由于php是类型自己主动转换的。

实现上使用接口能够约束类的定义。从而实现一致的訪问.

从上述代码能够看出, 在不改变原来代码结构的基础上, 能够加入多个数据库连接

比方要添加一个oracle数据库连接,仅仅须要再添加在添加类的基础上就完毕

class dbOracle implements DB{
function conn(){
echo '<hr />连接oracle成功';
}
}

class getOracle implements Factory{
public  function createDB(){
return new dbOracle;
}
}

$facOracle = new getOracle();
$facOracle = $facOracle->createDB();
$facOracle->conn(); // 连接Orache成功
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: