Design patterns 域对象是否应该包含其映射器?
给定一个域对象(例如,Person),该对象是否应该包含其数据映射器(Person\u Mapper) 例如,我可以通过以下两种不同的方式使一个灭活动作工作:Design patterns 域对象是否应该包含其映射器?,design-patterns,orm,data-mapping,Design Patterns,Orm,Data Mapping,给定一个域对象(例如,Person),该对象是否应该包含其数据映射器(Person\u Mapper) 例如,我可以通过以下两种不同的方式使一个灭活动作工作: $mapper = new Person_Mapper(); $person = $mapper->load(1); $person->active = false; $mapper->save($person); 或者像这样: $mapper = new Person_Mapper(); $person = $
$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类应该只知道Person内容,因此不应该包含任何与数据映射有关的内容
请参见我不太清楚DAO模式和数据映射器模式之间的关系,但是对于DAO,Person对象将返回一个transfer对象,其中inactive字段设置为true,并将其交还给Person DAO处理。person对象根本不应该从持久性中知道