PHP设计模式之适配器模式

本文介绍了适配器模式的概念及其实现方式,通过一个数据库操作的例子展示了如何将不同类的接口统一,使得原本不兼容的类能够协同工作,实现代码解耦。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

适配器模式:将一个类的接口转换成外部希望的另外一个接口,使用原本不兼容的而不能在一起工作的那些类可以在一起工作.适配器就是一个把拥有相似功能但是接口名不同的类封装成拥有同样接口名的类,这样只需要更改接口引入的类,但不需要改变类中的方法,就可以换成另一个相同功能不同类名和方法名.
  如:数据库操作有MySQL,MySQLi,PDO三种
     memcache,redis,file,apc等不同的缓存函数

步骤:
   1.定义一个接口:规定方法与参数
   2.有几个要实现的类,就写几个类继承该接口

接口 IDatabase

<?php
namespace Test;
interface IDatabase
{
    function connect($host, $user, $passwd, $dbname);
    function query($sql);
    function close();
}

MySQL类

<?php
namespace Test\Database;
use Test\IDatabase;
class MySQL implements IDatabase
{
    protected $conn;

    function connect($host, $user, $passwd, $dbname)
    {
            $conn = mysql_connect($host, $user, $passwd);
            mysql_select_db($dbname, $conn);
            $this->conn = $conn;
    }

    function query($sql)
        {
            $res = mysql_query($sql, $this->conn);
            return $res;
    }

    function close()
    {
        mysql_close($this->conn);
    }
}

MySQLi类

<?php
namespace Test\Database;
use Test\IDatabase;
class MySQLi implements IDatabase
{
    protected $conn;

    function connect($host, $user, $passwd, $dbname)
    {
        $conn = mysqli_connect($host, $user, $passwd, $dbname);
        $this->conn = $conn;
    }

    function query($sql)
    {
        return mysqli_query($this->conn, $sql);
    }

    function close()
    {
        mysqli_close($this->conn);
    }
}

这样在之后的调用,只需要使用接口上规定的方法就行,可以在MYSQL和MYSQLi中简单互换,不需要改方法名和参数这些,实现了代码的解耦.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值