2

给定一个域对象(例如,Person),该对象是否应该包含它的数据映射器(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);
    }
}
4

2 回答 2

5

Person 类应该只知道 Person 的东西,因此不应该包含与数据映射有关的任何内容。

http://en.wikipedia.org/wiki/Single_responsibility_principle

于 2009-01-21T22:21:22.250 回答
1

我有点不清楚 DAO 模式和 Data Mapper 模式之间的关系,但是使用 DAO,Person 对象将返回一个将非活动字段设置为 true 的传输对象,并将其交给 Person DAO 来处理的。person 对象根本不应该从持久性中知道。

于 2009-01-29T15:49:16.407 回答