zoukankan      html  css  js  c++  java
  • php设计模式之适配器模式

    将各种截然不同的函数接口封装成统一的API。 
    PHP中的数据库操作有MySQL,MySQLi,PDO三种,可以用适配器模式统一成一致,使不同的数据库操作,统一成一样的API。类似的场景还有cache适配器,可以将memcache,redis,file,apc等不同的缓存函数,统一成一致。 
    首先定义一个接口(有几个方法,以及相应的参数)。然后,有几种不同的情况,就写几个类实现该接口。将完成相似功能的函数,统一成一致的方法。

    创建接口IMooc/Database.php

    在IMooc/Database文件创建 Mysql.php Mysqli.php  PDO.php

    //接口 IDatabase
    <?php
    namespace Database;
    interface IDatabase
    {
        function connect($host, $user, $passwd, $dbname);
        function query($sql);
        function close();
    }
    
    MySQL
    <?php
    namespace IMoocDatabase;
    use IMoocIDatabase;
    class MySQL implements IDatabase
    {
        protected $conn;
        function connect($host, $user, $passwd, $dbname)
        {
            $conn = mysql_connect($host, $user, $passwd);
            mysql_select_db($dbname, $conn);
            $this->conn = $conn;
        }
    
        function query($sql)
        {
            $res = mysql_query($sql, $this->conn);
            return $res;
        }
    
        function close()
        {
            mysql_close($this->conn);
        }
    }
    

      

    MySQLi
    <?php
    namespace IMoocDatabase;
    use IMoocIDatabase;
    class MySQLi implements IDatabase
    {
        protected $conn;
    
        function connect($host, $user, $passwd, $dbname)
        {
            $conn = mysqli_connect($host, $user, $passwd, $dbname);
            $this->conn = $conn;
        }
    
        function query($sql)
        {
            return mysqli_query($this->conn, $sql);
        }
    
        function close()
        {
            mysqli_close($this->conn);
        }
    }
    

      

    PDO
    <?php
    namespace IMoocDatabase;
    use IMoocIDatabase;
    class PDO implements IDatabase
    {
        protected $conn;
        function connect($host, $user, $passwd, $dbname)
        {
            $conn = new PDO("mysql:host=$host;dbname=$dbname", $user, $passwd);
            $this->conn = $conn;
        }
    function query($sql)
        {
            return $this->conn->query($sql);
        }
    
        function close()
        {
            unset($this->conn);
        }
    }
    

      

  • 相关阅读:
    CF708B
    P4308 [CTSC2011]幸福路径
    P3631 [APIO2011]方格染色
    P1436棋盘分割 记忆化搜索解法
    P2463 [SDOI2008]Sandy的卡片[差分+串拼接后缀数组]
    P2743(poj1743) Musical Themes[差分+后缀数组]
    BZOJ3230 相似子串[后缀数组+二分+st表]
    hdu3518 Boring Counting[后缀排序]
    Robot Framework自动化_Selenium2Library 关键字
    Robot Framework自动化_环境搭建以及第一个用例
  • 原文地址:https://www.cnblogs.com/guoyachao/p/11253906.html
Copyright © 2011-2022 走看看