设计模式:二

来源:互联网 发布:录制绘画过程软件 编辑:程序博客网 时间:2024/05/29 23:44

php面向对象设计模式中,工厂模式,从字面中就可以以理解为,工厂模式就是在不改变原来代码的结构的基础上,根据需求的增加类定义去完成

<?phpheader("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成功
1 1
原创粉丝点击