标签:
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