zoukankan      html  css  js  c++  java
  • PHP设计模式-适配器模式

    适配器模式:将一个类的接口转换成外部希望的另外一个接口,使用原本不兼容的而不能在一起工作的那些类可以在一起工作.适配器就是一个把拥有相似功能但是接口名不同的类封装成拥有同样接口名的类,这样只需要更改接口引入的类,但不需要改变类中的方法,就可以换成另一个相同功能不同类名和方法名.
      如:数据库操作有MySQL,MySQLi,PDO三种
         memcache,redis,file,apc等不同的缓存函数

    步骤:
       1.定义一个接口:规定方法与参数
       2.有几个要实现的类,就写几个类继承该接口

    接口 IDatabase

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

    MySQL类

    <?php
    namespace TestDatabase;
    use TestIDatabase;
    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 TestDatabase;
    use TestIDatabase;
    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);
        }
    }

    这样在之后的调用,只需要使用接口上规定的方法就行,可以在MYSQL和MYSQLi中简单互换,不需要改方法名和参数这些,实现了代码的解耦.

    ————————————————
    版权声明:本文为CSDN博主「root_admin_12138」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/root_admin_12138/article/details/82453642

  • 相关阅读:
    Vue + better-scroll 入门教程
    Vue + Vant 实现顶部关键字搜索栏
    JS实现函数节流方法
    AngularJS服务及注入--Provider
    入门Webpack,看这篇就够了
    Vue.js中ref ($refs)用法举例总结
    从0开始做一个的Vue图片/ 文件选择(上传)组件[基础向]
    gulp自动化部署:gulp发布express项目(二)
    webstorm添加调试nodejs
    web window pixel等笔记
  • 原文地址:https://www.cnblogs.com/zhangzhijian/p/12305658.html
Copyright © 2011-2022 走看看