适配器模式有什么用?
将一个类的接口转换成客户希望的另外一个接口。适配器模式使得原来由于接口不兼容而不能一起工作的那此类可以一起工作
适用性
1、你想使用一个已经存在的类,而它的接口不符合你的需求
2、你想创建一个可以复用的类,该类可以与其他不相关的类或不可预见的类协同工作
3、你想使用一个已经存在的子类,但是不可能对每一个都进行子类化以匹配它们的接口。对象适配器可以适配它的父类接口(仅限于对象适配器)
应用举例,例如PHP的数据库操作有MySQL、Mssql、PDO等,可以用适配器模式统一成一致。类似的场景还有cache适配器,将memcache、redis、file、apc等不同的缓存函数,统一成一致。
接下来我们以数据库操作来举例,为了编辑方便,博主就把代码都写一起了
_adaptee = new Adaptee(); } public function connect($host, $user, $passwd, $dbname){ /** * code... * 委派调用Adaptee的connect方法 */ $this->_adaptee->connect($host, $user, $passwd, $dbname); //return 'ok'; } public function query($sql){ /** * code... */ return 'ok'; } public function close(){ /** * code... */ return 'ok'; } } /** * 类适配器角色 * 创建mssql操作类文件 Mssql.php * 继承接口 实现接口方法 */ class Mssql implements IDataBase { public function connect($host, $user, $passwd, $dbname){ /** * code... */ return 'ok'; } public function query($sql){ /** * code... */ return 'ok'; } public function close(){ /** * code... */ return 'ok'; } } /** * 类适配器角色 * 创建pdo操作类文件 Pdo.php * 继承接口 实现接口方法 */ class Pdfo implements IDataBase { public function connect($host, $user, $passwd, $dbname){ /** * code... */ return 'ok'; } public function query($sql){ /** * code... */ return 'ok'; } public function close(){ /** * code... */ return 'ok'; } } /** * 使用 * 这样就可以任意的在三种适配器之间进行切换 */ $db = new Mysql(); echo $db->connect('127.0.0.1', 'root', 'root', 'test'); echo $db->query('show databases'); echo $db->close(); ?>
博主也参考了网上一些示例,总觉得写的也不明确,直到写完这篇,博主依旧疑惑。不知道我的理解是否正确,看过之后的朋友还望指点一二。
好了,今儿就到这,更多深入信息可以自己去网上找,或者查看相关书籍
荒野乱斗国际版 (BrawlStars)最新版本v56.274
下载一波超人内置修改器菜单版 安卓版v1.0.2
下载敢达决战官方正版 安卓版v6.7.9
下载敢达决战 安卓版v6.7.9
下载继承了一座戏园子无限声望铜钱版 内置菜单最新版v1.7
继承了一座戏园子折相思版是游戏的破解版本,在该版本中为玩家提
山河半世橙光清软金手指版 无限鲜花v3.24
山河半世是一款超级好玩的橙光恋爱游戏,在游戏中玩家们需要扮演
蓬莱手游折相思版 安卓版v1.0.0
蓬莱免广告版是游戏的修改版本,在该版本中为玩家去除了广告,玩
当红影后橙光游戏破解版2025 最新版v1.0
当红影后橙光破解版是一款超级好玩的娱乐圈题材的橙光游戏,在这
忽然成了万人迷清软完结版 无限鲜花版v12.15
忽然成了万人迷破解版是一款非常好玩的男性向橙光游戏,在有一天