BAT 批处理程序 2017-04-21
将不同函数的接口封装成统一的api,每个类必须要实现接口中的方法,eg:操作mysql数据库有mysql,PDO,MySQLi三种,可以将三种分装成统一的接口,再例如cache适配器,将memeche ,redis ,file,apc等不同的缓存函数分装成统一的接口。
//定义接口 interface Adapter { public function connect(); public function close(); public function query(); //还以定义很多,也就是增删改查 }
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); } }
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
前几篇介绍了设计模式的特性并且详细讲解了4种创建型模式,创建型模式是负责如何产生对象实例的,接下来讲讲结构型模式。结构型模式是解析类和对象的内部结构和外部组合,通过优化程序结构解决模块之间的耦合问题。