我以前一直和各種ORM一起工作,並將我所有的邏輯放在模型中,而不管它是什麼性質--SQL,MongoDB查詢&甚至讀取遠程JSON對象。 但是,當需要確保鬆耦合以提高可測試性時,這種方法的問題會很快出現。瞭解域對象+數據映射器模式?
今天我已閱讀關於將模型分爲兩部分,Domain objects
& Data mappers
。
如果我完全理解它,Domain objects
完全不知道使用的存儲,而是存在處理業務邏輯。另一方面,Data mappers
負責將設置在Domain objects
中的數據存儲到設定的數據存儲器中。
但是,我發現在網上找到一個很好的,易於理解的示例很難找到如何在現實世界的示例中使用DomainObjects DataMapper。
請問這個(下面顯示的代碼)是否與我的代碼中的DomainObjects & DataMappers一起使用來存儲用戶或我的頭腦中都弄錯了嗎?
$user = new User_DO;
$userSave = new User_DM;
$userSave->store($user->add(array('name' => 'John Doe')));
class User_DO {
function add($array) {
if(!isset($array['name'])) {
throw new Exception("Name must be set");
}
return $array;
}
}
class User_DM {
function store($array) {
MyDatabase::execute("INSERT INTO...");
}
}
在現實世界中可能是一個愚蠢的例子,但它可以更好地解釋模式,它將是一個帶有「年齡」字段的域對象,而數據映射器會保留「年份」值。 –