亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

【九月打卡】第6天 設計模式之適配器模式

標簽:
PHP 設計模式

课程名称:大话PHP设计模式

课程章节:适配器模式

课程讲师:Rango

课程内容:

为什么要使用适配器模式

首先要来说适配器模式解决了什么问题,试想如下场景,php可以使用mysql库或者pdo库来操作数据库,但是有的人像用mysql,有的人想用pdo;
那么就可以定义一套同一的接口,分别实现mysql版本和pdo版本,然后由用户来选择使用哪一个

具体实现

注意这套代码仅展示功能,直接复制过去是不能运行的,你可能需要修改命名空间

  • 首先定义一套接口
<?php

interface Database
{
  public function connect($host, $user, $name, $dbname);
  public function query($sql);
  public function close();
}
  • 然后实现用mysql库来实现接口
<?php

namespace Databasee;

class Mysql implements \Database
{

  public function connect($host, $user, $name, $dbname)
  {
    // 这里写使用Mysql连接到数据库的具体实现代码
    return '连接到数据库';
  }

  public function query($sql)
  {
    // 这里写使用Mysql进行数据库查询的具体实现代码
    return "执行sql语句({$sql})";
  }

  public function close()
  {
    // 这里写关闭Mysql关闭数据库的具体实现代码
    return '关闭数据库';
  }
}
  • 然后用pdo来实现接口
<?php


namespace Databasee;


class Pdo implements \Database
{

  public function connect($host, $user, $name, $dbname)
  {
    // 这里写使用Pdo连接到数据库的具体实现代码
    return '连接到数据库';
  }

  public function query($sql)
  {
    // 这里写使用Pdo进行数据库查询的具体实现代码
    return "执行sql语句({$sql})";
  }

  public function close()
  {
    // 这里写关闭Pdo关闭数据库的具体实现代码
    return '关闭数据库';
  }
}
  • 最后来使用自己写的mysql类和pdo类操作数据库
<?php

use Databasee\Mysql;
use Databasee\Pdo;

// 使用封装的Mysql类访问操作数据库
$obj = new Mysql();
echo $obj->connect('127.0.0.1', 'admin', 'admin', 'test');
echo $obj->query('select * from test');
echo $obj->close();

// 使用封装的Pdo类访问操作数据库
$obj = new Pdo();
echo $obj->connect('127.0.0.1', 'admin', 'admin', 'test');
echo $obj->query('select * from test');
echo $obj->close();

其它

适配器模式除了适合用在操作数据库上,还适合用在操作缓存上面,比如封装一个文件缓存、一个redis缓存、一个数据库缓存

课程收货

通过学习适配器模式,想到了在之前用过的tp框架中一些功能的实现,这套设计模式非常实用,可以把多种不统一的接口统一为一套接口。感谢rango老师的讲解。

图片描述

點擊查看更多內容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優質文章

正在加載中
  • 推薦
  • 評論
  • 收藏
  • 共同學習,寫下你的評論
感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消