根據這篇文章here我正確使用域對象嗎?
你可以把它們[服務]作爲「更高級別的域對象」,但不是商業邏輯,服務負責域對象和映射器之間的互動。這些結構最終創建了一個用於與域業務邏輯進行交互的「公共」接口。您可以避免它們,但是會將一些域邏輯泄漏到控制器中。
我一直在閱讀MVC,並將其分解爲服務,域對象和數據映射器。服務和數據映射器很容易弄清楚,但我不明白域對象的原因,請給我一些例子嗎?這裏是我的代碼:
MemberService
class MemberService extends Service
{
public function authenticate()
{
$domainObject = $this->domainObjectFactory->getDomainObject('Member');
$dataMapper = $this->databaseFactory->getMapper('Member');
$_temp_sess_id = 0;
$_temp_sess_password = "";
$member = $dataMapper->fetch($_temp_sess_id);
$authenticationResult = $domainObject->checkPassword($member['password'], $_temp_sess_password);
if (!$authenticationResult)
{
$member = ['user_id' => 0];
}
return $member;
}
}
MemberDomainObject
class MemberDomainObject extends DomainObject
{
public function checkPassword($dataMapperPassword, $locallyStoredPassword)
{
if ($dataMapperPassword !== $locallyStoredPassword)
return false;
return true;
}
}
UPDATE:
這個問題是關於方法checkPassword和爲什麼它要創建一個單獨的對象只是使用一個可以在服務內部使用的IF語句,從而使RAM不再使用額外的資源來創建一個新的對象。
的可能的複製指定返回類型[瞭解域對象/服務(HTTP:/ /stackoverflow.com/questions/5589141/understanding-domain-objects-services) – Reloecc
好吧,它說:「域對象是數據,域服務是數據部分。」所以我必須在服務部分完成所有的if,而將$ member存儲在DO中? –
也根據這個答案在這裏:http://stackoverflow.com/questions/5863870/how-should-a-model-be-structured-in-mvc?lq=1,「你可以想到他們[服務]作爲「更高級別的域對象」,而不是業務邏輯,服務負責域對象和映射器之間的交互。「 –