继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

【九月打卡】第6天 设计模式之适配器模式

潮流宣乐生
关注TA
已关注
手记 55
粉丝 0
获赞 0

课程名称:大话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老师的讲解。

图片描述

打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP