• 设计模式之适配器模式


    概念

          将不同函数的接口封装成统一的api,每个类必须要实现接口中的方法,eg:操作mysql数据库有mysql,PDO,MySQLi三种,可以将三种分装成统一的接口,再例如cache适配器,将memeche ,redis ,file,apc等不同的缓存函数分装成统一的接口。

    实现

    先定义一个接口,让每一类都实现这一个接口

    //定义接口
    interface  Adapter
    {
        public function connect();
    
        public function close();
    
        public function query();
        //还以定义很多,也就是增删改查
    }

    定义mysqli操作数据库类,实现Adapter接口

    class MyMysqli implements Adapter
    {
        protected $connect;
    
        public function connect()
        {
            // TODO: Implement connect() method.
            $this->connect = mysqli_connect('127.0.0.1', 'root', '');
            mysqli_select_db($this->connect, 'mysql');
            return $this->connect;
        }
    
        public function query()
        {
            // TODO: Implement query() method.
            return mysqli_query($this->connect, 'show tables');
        }
    
        public function close()
        {
            // TODO: Implement close() method.
            mysqli_close($this->connect);
        }
    }

    定义PDO操作数据库,实现Adapter接口

    class MyPDO implements Adapter
    {
        protected $connect;
    
        public function connect()
        {
            // TODO: Implement connect() method.
            $this->connect = new PDO('mysql:dbname=test;host=127.0.0.1', 'root', '');
        }
    
        public function query()
        {
            // TODO: Implement query() method.
            return $this->connect->query("show tables");
        }
    
        public function close()
        {
            // TODO: Implement close() method.
            unset($this->connect);
        }
    }

    在要操作数据库的地方直接调用

    $pdo = new MyMysqli();
    $pdo->connect();
    $pdo->query();

    写了怎么就感觉是实现相同的接口呢。有点纳闷。

    视频连接免费:http://www.imooc.com/learn/236

  • 相关阅读:
    第13章 使用ADO.NET访问数据库
    第11章 连接查询和分组查询
    第10章 模糊查询和聚合函数
    第9章 数据查询基础
    数据库前三章测试题
    用表组织数据
    程序数据集散地:数据库
    深入C#的String类
    线程池
    hadoop-2.8.0 完全分布式运行模式
  • 原文地址:https://www.cnblogs.com/webph/p/6745285.html
Copyright © 2020-2023  润新知