适配器模式

Posted waterliang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了适配器模式相关的知识,希望对你有一定的参考价值。

概念:把不同的接口封装成统一的api

 

实例: 这里以数据库连接为例

首先定义一个接口来约束数据库类必须实现的方法:DatabaseInterFace.php

<?php

namespace app;

/**
 * 数据库连接接口
 * Interface DatabaseInterFace
 * @package app
 */
interface DatabaseInterFace
{
    /**
     * 数据库连接
     * @param $host string 地址
     * @param $user string 用户名
     * @param $password string 密码
     * @param $dbName string 数据库名
     * @return mixed
     */
    public function connect($host, $user, $password, $dbName);

    /**
     * 执行sql
     * @param $sql string 执行语句
     * @return mixed
     */
    public function query($sql);

    /**
     * 关闭数据库连接
     * @return mixed
     */
    public function close();
}

 

开始定义数据库连接类:

技术图片

 

mysql.php为例

<?php

namespace appdriver;

/**
 * Mysql连接类
 * Class Mysql
 * @package appdriver
 */
class Mysql implements appDatabaseInterFace
{
    protected $conn;

    /**
     * 数据库连接
     * @param $host string 地址
     * @param $user string 用户名
     * @param $password string 密码
     * @param $dbName string 数据库名
     * @return mixed
     */
    public function connect($host, $user, $password, $dbName)
    {
        // 这里把数据库连接代码加上
    }

    /**
     * 执行sql
     * @param $sql string 执行语句
     * @return mixed
     */
    public function query($sql)
    {
    // 这里要把实际代码补上
    }

    /**
     * 关闭数据库连接
     * @return mixed
     */
    public function close()
    {
    // 这里要把实际代码补上
    }
}

图中Mysqli.php和PDO.php和上面的Mysql.php文件一样,也是要实现connect、query、close方法,只是各自的连接代码写法不一样(这个和thinkphp5的数据库连接驱动类似)

 

定义好了数据库连接类,开始在index.php中调用

<?php

// 定义自动注册
spl_autoload_register(function ($class) {
    include $class . ‘.php‘;
});

// 调用数据库连接类
// 说明:由于数据库连接我们都定义成一样的方法了,所以这里可以根据自己的需要把Mysql连接类换成PDO或者Mysqli或者其他,这就凸现了适配器的作用
$database = new appdriverMysql();

// 连接数据库
$dbConn = $database->connect(‘127.0.0.1‘, ‘root‘, ‘root‘, ‘test‘);

// 执行sql
$res = $dbConn->query(‘select * from t_study limit 1‘);

// 关闭数据库连接
$dbConn->close();

 

到此就完成了

 

以上是关于适配器模式的主要内容,如果未能解决你的问题,请参考以下文章

如何将数据从回收器适配器发送到片段 |如何从 recyclerview 适配器调用片段函数

如何从片段适配器启动活动

片段中ListView的android自定义适配器

设计模式之单例模式

片段内带有基本适配器的列表视图

片段中gridview的Android文本和图像适配器