PHP 设计模式十 适配器模式

178 阅读1分钟

「这是我参与11月更文挑战的第20天,活动详情查看:2021最后一次更文挑战

课程背景

  • 最近完成一个项目 对于代码分层有了一丢丢了解 但是架构设计合理性上存在问题
  • 万物看本质基本功硬 底层知识扎实才能写出更优质的代码 才能走得更远
  • 作为努力奔跑的程序员 又一次的去温习 思考 设计模式等基础的php知识
  • 因为掘金粑粑有奖励,所以把学习的笔记整理记录并分享了出来。

正文开始

上一章节中定义了数据库操作的统一接口,我们写了MySQLi类来具体实现了接口的方法来实现MySQLi数据库的方法。

1 我们创建一个新的链接方式 创建文件\Liiy\Database\PDO.php,实现IDatabase接口。

<?php
namespace Liiy\Database;

class PDO implements IDatabase{

    function connect($host, $user, $passwd, $dbbane){

    }

    function select($sql){

    }

    function close(){

    }
}

具体的实现代码这就就不去深入的编写了,跟MySQLi中定义的三个方法一样。用PDO的方式具体实现即可。

2 编写测试代码测试MySQLi的具体实现。我们的虚拟主机中存在Mysql服务,我把ip固定在192.168.2.2上,所以我们连接到这个数据库进行测试

index.php入口文件中编写方法

<?php
use Liiy\Database\MySQLi;

define("BASE_DIR",__DIR__);  //文件基础目录
require BASE_DIR . '\Liiy\Loader.php';  //加载自动加载类
spl_autoload_register("\Liiy\Loader::autoload"); //指定自动加载方法

$query = new MySQLi();
$query->connect('192.168.2.2','hz_admin_com','admin123','hz_admin_com');
$result = $query->select('select * from think_banner');
$query->close();

var_dump($result);

此时当我们访问入口文件的时候会返回数据库中存在的数据。

image.png 这样我们就完成了数据操作的适配器模式的实现。

总结核心思想就是将同一类似的存在差异的方法通过接口实现通用方法的调用。这样就不用在意用的什么数据库,只需要会进行数据调用即可。