码迷,mamicode.com
首页 > 其他好文 > 详细

设计模式:二

时间:2015-06-12 01:00:29      阅读:73      评论: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
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!