首页 > 其他 > 详细

设计模式:二

时间:2015-06-12 00:58:09      阅读:244      评论:0      收藏:0      [点我收藏+]

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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!