zoukankan      html  css  js  c++  java
  • 设计模式:二

    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成功
  • 相关阅读:
    86. Partition List
    328. Odd Even Linked List
    19. Remove Nth Node From End of List(移除倒数第N的结点, 快慢指针)
    24. Swap Nodes in Pairs
    2. Add Two Numbers(2个链表相加)
    92. Reverse Linked List II(链表部分反转)
    109. Convert Sorted List to Binary Search Tree
    138. Copy List with Random Pointer
    为Unity的新版ugui的Prefab生成预览图
    ArcEngine生成矩形缓冲区
  • 原文地址:https://www.cnblogs.com/lcchuguo/p/5237555.html
Copyright © 2011-2022 走看看