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种创建型模式,创建型模式是负责如何产生对象实例的,接下来讲讲结构型模式。结构型模式是解析类和对象的内部结构和外部组合,通过优化程序结构解决模块之间的耦合问题。