适配器模式

    • 适配器模式(Adapter)模式:将一个类的接口,转换成客户期望的另一个类的接口。适配器让原本接口不兼容的类可以合作无间。列如:将数据库接口封装成一样的接口, 这样就可以适用于不同场景
    • 案例 将php数据操作封装成统一的api

      • 统一接口api

        <?php
        namespace Test;
        
        interface IDatabase
          {
                function connect($host, $user, $passwd, $dbname);
                function query($sql);
                function close();
          }
        • mysql 连接

          
          <?php
          namespace Test;
          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 TEST;
    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 Test;
    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);
        }
    }
    文章目录