• 周蓬安.blog的博客—强国博客—人民网 2019-05-10
  • 紫光阁中共中央国家机关工作委员会 2019-05-10
  • 感触名家笔下的端午文化吃香粽原来可以这样文艺 2019-05-09
  • 追梦夺冠游行嘲讽詹皇 百万人面前穿订制T恤羞辱他 2019-04-27
  • 《瘟疫传说》:黑死病恐怖 姐弟在绝望中求生 2019-04-10
  • 陕西国防工业职业技术学院百名大学生志愿者敬老院慰问孤寡老人陕西国防工业职业技术学院百名大学生志愿者敬老院慰问-陕西教育新闻 2019-04-08
  • 西藏拉萨:新家园 新生活 2019-04-08
  • 尊重和保障宗教信仰自由的中国实践 2019-04-06
  • 一敬泯恩仇 俄罗斯队主帅这个动作太暖了 2019-03-20
  • 四大名著剧组首次同台忆往事 经典影视剧如何铸就? 2018-12-07
  • “天眼”凝望 探秘宇宙 2018-12-07
  • 0

    PHP适配器模式

    Posted by 撒得一地 on 2016年1月30日 in PHP笔记
    国外稳定加速器推荐    Express | Vypr

    适配器模式,可以将截然不容的函数接口封装成统一的API。通俗的理解就是将不同接口适配成统一的API接口,使得原本不兼容的接口能够一起工作。

    实际应用举例,PHP的数据库操作有mysql,mysqli,pdo等,可以使用适配器模式统一成一致。类似的场景还有cache适配器,比如将memcache,redis,file,apc等不同缓存,统一成一致的接口。比如下面的数据库实例:

    //首先定义一个统一接口
    
    //在不同适配中,具体函数操作不一样,但接口一致
    interface IDatabase
    {
       function connect($host,$user,$passwd,$dbname);
    
       function query($sql);
    
       function close();
    }
    
    //下面定义一个用mysql操作数据库的类
    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进行数据库操作
    
    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)
         {
             $res = mysqli_query($this->conn,$sql);
             return $res;
    
          }
    
          function close()
          {
             mysqli_close($this->conn);
           }
    
    }
    
    //同理,用pdo进行数据库操作
    
    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;)
            }
    }
    
    //当选择Mysql类操作时
    $db = new Mysql();
    
    //下面改成你自己的用户密码和数据库名称
    $db->connect('localhost','root','root','test');
    $db->query($sql);
    

    上面就是一个完整的适配器模式的例子。首先我们约定了一个统一接口,接口定义了统一的方法,约定好后再分别去创建每一个适配器实例,而这些适配器实例都遵循一开始约定的接口规则。这样规范的好处是,被适配者通过个人情况去选择特定适配器完成对适配目标的适配。比如在上面的数据库例子中,喜欢PDO方法的,可以选择PDO类去操作数据库,而在一些版本比较低的php环境中,可能还不支持PDO,那么这些用户可以选择Mysql类去操作数据库,这样大大方便了不同用户的场景选择。

    总结,适配器模式定义的角色:

    Target适配目标,该角色定义把其他类转换为何种接口,也就是我们的期望接口。

    Adaptee被适配者,就是需要被适配的接口。

    Adapter适配器,其他的两个角色都是已经存在的角色,而适配器角色是需要新建立的,它用来对Adaptee与Target接口进行适配。

    上面的例子中

    Target适配目标: IDataBase接口

    Adaptee被适配者:Mysql 和Mysqli和PDO的数据库操作函数

    Adapter适配器 :Mysql类和Mysqli类和PDO类

    标签:

    上一篇:

    下一篇:

    相关推荐

    发表评论

    电子邮件地址不会被公开。 必填项已用*标注

    6 + 6 = ?

    网站地图|广东快乐10分开奖直播

    Copyright © 2015-2019 广东快乐10分开奖直播 All rights reserved.
    闽ICP备15015576号-1,版权所有?psz.

  • 周蓬安.blog的博客—强国博客—人民网 2019-05-10
  • 紫光阁中共中央国家机关工作委员会 2019-05-10
  • 感触名家笔下的端午文化吃香粽原来可以这样文艺 2019-05-09
  • 追梦夺冠游行嘲讽詹皇 百万人面前穿订制T恤羞辱他 2019-04-27
  • 《瘟疫传说》:黑死病恐怖 姐弟在绝望中求生 2019-04-10
  • 陕西国防工业职业技术学院百名大学生志愿者敬老院慰问孤寡老人陕西国防工业职业技术学院百名大学生志愿者敬老院慰问-陕西教育新闻 2019-04-08
  • 西藏拉萨:新家园 新生活 2019-04-08
  • 尊重和保障宗教信仰自由的中国实践 2019-04-06
  • 一敬泯恩仇 俄罗斯队主帅这个动作太暖了 2019-03-20
  • 四大名著剧组首次同台忆往事 经典影视剧如何铸就? 2018-12-07
  • “天眼”凝望 探秘宇宙 2018-12-07
  • 双色球走势图带连线 捕鱼达人单机版 湖南幸运赛车开奖查询 足彩15192期分析 时时彩个位杀号通杀法 蓝球竞彩胜平负 山东群英会推荐号今天 三亚娱乐城 京东彩票平台 澳洲幸运8彩票 山东临沂87.cn彩票投注站 刮刮乐拖把安装视频 体彩p3双彩论坛字谜 竞彩足球让球胜平负技巧 任选9场奖金再创历史 北京pk10单吊一码公式