数据访问对象模式 - Data Access Object Pattern
定义
对数据源的访问与存储进行封装,提供一个数据访问对象类负责对存储的数据进行管理和操作,规范数据存储格式。
数据访问对象模式,简称DAO模式。
结构中包含的角色
- 数据访问对象接口(Data Access Object Interface) ModelDAO 抽象操作数据库的方法
- 数据访问对象实体类(Data Access Object concrete class)ModelDaoImpl 具体操作数据库的方法
- 模型对象/数值对象(Model Object/Value Object) Model 数据库的数据对应的实体类
最小可表达代码
class Model
{
private $id;
public function __construct(int $id)
{
$this->id = $id;
}
public function getId()
{
return $this->id;
}
}
interface ModelDao
{
public function getModels();
public function getModel(int $id);
}
class ModelDaoImpl implements ModelDao
{
private $models;
public function __construct()
{
$this->models = [
new Model(1),
new Model(2),
];
}
public function getModels()
{
return $this->models;
}
public function getModel(int $id)
{
foreach ($this->models as $model) {
if ($id == $model->getId()) return $model;
}
return null;
}
}
$modelDao = new ModelDaoImpl();
$models = $modelDao->getModels();
$model = $modelDao->getModel(1);
var_dump($models, $model);
实际应用场景
- Laravel的Eloquent