php设计模式——适配器模式

适配器模式

  • 适配器模式(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);
    }
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 适配器模式(有时候也称包装样式或者包装)将一个类的接口适配成用户所期待的(适配器模式要解决的核心问题)。一个适配允...
    中v中阅读 379评论 0 0
  • 类图 插座转换 德标接口 实现德标的德国插座 德国酒店 国标接口 实现国标的中国插座 适配器(插头转换 接口转换) 测试
    spike15阅读 207评论 0 0
  • 设计模式 单例模式解决的是如何在整个项目中创建唯一对象实例的问题,工厂模式解决的是如何不通过new建立实例对象的方...
    a十二_4765阅读 667评论 1 1
  • pyspark.sql模块 模块上下文 Spark SQL和DataFrames的重要类: pyspark.sql...
    mpro阅读 9,554评论 0 13
  • 九十年代的小城是很闭塞的。汉生高中毕业应聘进了这家食品加工厂,一个月好像有好几百块。那时的小城还没有房地产开...
    12cfdc1a8e3f阅读 313评论 0 0