设计模式之适配器模式
概念
将不同函数的接口封装成统一的api,每个类必须要实现接口中的方法,eg:操作mysql数据库有mysql,PDO,MySQLi三种,可以将三种分装成统一的接口,再例如cache适配器,将memeche ,redis ,file,apc等不同的缓存函数分装成统一的接口。
实现
先定义一个接口,让每一类都实现这一个接口
//定义接口 interface Adapter { public function connect(); public function close(); public function query(); //还以定义很多,也就是增删改查 }
定义mysqli操作数据库类,实现Adapter接口
class MyMysqli implements Adapter { protected $connect; public function connect() { // TODO: Implement connect() method. $this->connect = mysqli_connect('127.0.0.1', 'root', ''); mysqli_select_db($this->connect, 'mysql'); return $this->connect; } public function query() { // TODO: Implement query() method. return mysqli_query($this->connect, 'show tables'); } public function close() { // TODO: Implement close() method. mysqli_close($this->connect); } }
定义PDO操作数据库,实现Adapter接口
class MyPDO implements Adapter { protected $connect; public function connect() { // TODO: Implement connect() method. $this->connect = new PDO('mysql:dbname=test;host=127.0.0.1', 'root', ''); } public function query() { // TODO: Implement query() method. return $this->connect->query("show tables"); } public function close() { // TODO: Implement close() method. unset($this->connect); } }
在要操作数据库的地方直接调用
$pdo = new \MyMysqli(); $pdo->connect(); $pdo->query();
写了怎么就感觉是实现相同的接口呢。有点纳闷。
视频连接免费:http://www.imooc.com/learn/236
相关推荐
TingBen 2020-06-03
chenjinlong 2020-04-27
stefan0 2019-10-23
Macuroon 2018-09-12
lweiyue 2016-12-24
Ingram 2019-06-29
itjavashuai 2019-06-27
liuyaping 2011-04-24
Clevebaby 2019-06-26
stdjkdblom 2019-06-26
zhangbeizhen 2019-06-13
Iloveblog 2018-11-01
trandy 2013-09-15
码墨 2019-03-12
ThinkingLink 2017-01-13
dushu0 2017-03-13
东成熙就 2019-04-25
Triagen 2016-03-02