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

  • 相关阅读:
    Java面试题
    verilog之锁存器和触发器
    verilog基本语法之always和assign
    verilog之基本结构
    ZYNQ7000系列学习之TF卡读写实验
    英语文档阅读学习系列之ZYNQ-7000 All Programmable SOC Packaging and Pinout
    物理之纳电子
    英语文档阅读学习系列之Zynq-7000 EPP Software Developers Guide
    嵌入式C语言设计学习
    ZYNQ7000系列学习之自定义模块构成IP
  • 原文地址:https://www.cnblogs.com/webph/p/6745285.html
Copyright © 2011-2022 走看看