如果一个域对象包含它映射?
-
19-08-2019 - |
题
给定一个域对象(比方说,例如,人),应该对象包含其数据映射(Person_Mapper)?
例如,我可以在这两种不同方式的灭活作用工作:
$mapper = new Person_Mapper();
$person = $mapper->load(1);
$person->active = false;
$mapper->save($person);
或者是这样的:
$mapper = new Person_Mapper();
$person = $mapper->load(1);
$person->inactivate();
class Person
{
public function inactivate()
{
$this->active = false;
$this->_mapper->save($this);
}
}
解决方案
在Person类应只知道人的东西,因此不应包含任何与数据映射。
请参阅 http://en.wikipedia.org/wiki/Single_responsibility_principle
其他提示
我为DAO模式和所述数据映射图案之间的关系的有点不清楚,但与DAO Person对象将返回传输对象与非活动字段设置为真,并且该手背部到Person DAO照顾。人员对象不应该执着知不知道。
不隶属于 StackOverflow