一.总纲:
1.面向对象的五大原则:单一职责原则、接口隔离原则、开放-封闭原则、替换原则、依赖倒置原则。
二.单一职责原则:
1. 就一个类而言只有一个引起它变化的原因即为:单一职责原则。
2. 单一职责有两个含义:
a. 避免相同的职责分散到不同的类
b. 避免一个类承担太多的职责
3. 遵循单一职责原则的原因:减少类之间的耦合,提高类的复用性。
三.工厂模式:
1. 工厂模式允许在代码执行时实例化对象。能够‘生产’对象。
2. 示例:
<?php
/*
* 单一职责原则
*/
interface Db_Adapter{
/*
* 数据库连接
* @param $config数据库配置
* @return resource
*/
public function connect($config);
/*
* 执行数据库查询
* @param string $query 数据库查询sql字符串
* @param mixed $handld 连接对象
* @return resource
*/
public function query($query,$handle);
}
class Db_Adapter_Mysql implements Db_Adapter{
private $_dbLink;
/*
* 数据库连接
*
* @param $config 数据库配置
* @throws Db_Exception
* @return resource
*/
public function connect($config){
if ($this->_dbLink =
@mysql_connect($config->host.(empty($config->port) ? '' : ':'.$config->port),
$config->user,$config->password,true)){
if (@mysql_select_db($config->database,$this->_dbLink)){
if ( $config->charset){
mysql_query("SET NAMES '{$config->charset}'",$this->_dbLink);
}
return $this->_dbLink;
}
}
/*数据库异常*/
throw new Db_Exception(@mysql_error($this->_dbLink)); //这一句报了很多错
}
/*
* 执行数据库查询
*
* @param string $query 数据库查询sql字符串
* @param mixed $handle 连接对象
* @return resource
*/
public function query($query,$handle){
$resource = "";
if ($resource == @mysql_query($query,$handle)){
return $resource;
}
}
}
class Db_Adapter_sqlite implements Db_Adapter{
private $_dbLink; //数据库连接字段标记
/*
* 数据库连接函数
*
* @param $config数据库配置
* @throws DB_exception
* @return resource
*/
public function connect($config){
if ($this->_dbLink = @mysql_connect($config->host.
(empty($config->port) ? '' : ':'.$config->port),
$config->user,$config->password,true)){
if (@mysql_select_db($config->database,
$this->_dbLink)){
if ($config->charset){
mysql_query("SET NAMES '{$config->charset}'",$this->_dbLink);
}
return $this->_dbLink;
}
}
/*数据库异常*/
throw new Db_exception(@mysql_error($this->dbLink));
}
/*
* 执行数据库查询
*
* @param string $query 数据库查询sql字符串
* @param mixed $handle 连接对象
* @return resource
*/
public function query($query,$handle){
$resource = "";
if ($resource == @mysql_query($query,$handle)){
return $resource;
}
}
}
$testDb = new Db_Adapter_Mysql();
$config = array(
//这里写数据库配置
'host'=>'localhost',
);
$testDb->connect($config);
$testDb->query($sql,$handle);