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

    概念

          将不同函数的接口封装成统一的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

  • 相关阅读:
    linq to access 简单实现 实例demo
    FCKEDITOR中文使用说明 js调用
    asp.net mvc 随想
    fccms 小型简单个人blog源码
    PHP文件上传路径
    前端优化技巧(一)
    会话框拖拽效果实现
    phpmailer配置
    上传图片动态预览(兼容主流浏览器)
    Java将多个list对象根据属性分组后合并成一个新的集合
  • 原文地址:https://www.cnblogs.com/webph/p/6745285.html
Copyright © 2011-2022 走看看