Design patterns 域对象是否应该包含其映射器?

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 = $

给定一个域对象(例如,Person),该对象是否应该包含其数据映射器(Person\u 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类应该只知道Person内容,因此不应该包含任何与数据映射有关的内容


请参见

我不太清楚DAO模式和数据映射器模式之间的关系,但是对于DAO,Person对象将返回一个transfer对象,其中inactive字段设置为true,并将其交还给Person DAO处理。person对象根本不应该从持久性中知道