定義
對資料來源的訪問與儲存進行封裝,提供一個資料訪問物件類負責對儲存的資料進行管理和操作,規範資料儲存格式。
資料訪問物件模式,簡稱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
本作品採用《CC 協議》,轉載必須註明作者和本文連結