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

  • 相关阅读:
    洛谷 P2480 [SDOI2010]古代猪文
    [六省联考2017]组合数问题
    数据结构--左偏树(可并堆)
    图论--tarjan求割点
    图论--tarjan缩点
    图论--DFS-SPFA求负环
    图论--tarjan求lca
    洛谷 P2163 [SHOI2007]Tree 园丁的烦恼
    数据结构--主席树(不带修改)
    洛谷 P1712 区间
  • 原文地址:https://www.cnblogs.com/zhangzhijian/p/12305658.html
Copyright © 2011-2022 走看看