zoukankan      html  css  js  c++  java
  • 适配模式

    定义:可以将截然不同的函数接口封装成统一的API
    实际应用举例:1.PHP的数据库有mysql,mysqli,pdo3种,可以用适配器模式统一成一致
                            2.cache适配器,将memcache,redis,file,apc等不同的缓存函数,统一成一致

    以实际应用举例1作为示例
    $db = new IMoocDatabaseMySQL();
    //$db = new IMoocDatabaseMySQLi();
    //$db = new IMoocDatabasePDO();
    $db->connect('127.0.0.1', 'root', 'root', 'test');
    $db->query("show databases");
    $db->close();

    <?php
    namespace IMooc;

    interface IDatabase
    {
    function connect($host, $user, $passwd, $dbname);
    function query($sql);
    function close();
    }

    <?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);
    }
    }

    <?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);
    }
    }

    <?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);
    }
    }

     





  • 相关阅读:
    vue简单的富文本实现(亲测可以)
    做手机兼容性看友盟手机统计
    压测并发数上不去的原因分析(泽嵩大佬说的)
    跨域问题解决
    jmeter压力测试报Address already in use: connect错误
    选择器(可搜索)+气泡提示组件
    2020
    Redis集群搭建采坑总结
    echarts自定义背景图片
    百度ECharts地图Json数据在线下载(geoJson)
  • 原文地址:https://www.cnblogs.com/phonecom/p/045f3d736d4c8a29c10b32149f9d94f8.html
Copyright © 2011-2022 走看看