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成功原文:http://blog.csdn.net/xueling022/article/details/46464065