Noa*_*ich 2 orm design-patterns data-mapping
给定一个域对象(例如,Person),该对象是否应包含其Data Mapper(Person_Mapper)?
例如,我可以通过以下两种不同方式执行停用操作:
$mapper = new Person_Mapper();
$person = $mapper->load(1);
$person->active = false;
$mapper->save($person);
Run Code Online (Sandbox Code Playgroud)
或者像这样:
$mapper = new Person_Mapper();
$person = $mapper->load(1);
$person->inactivate();
class Person
{
public function inactivate()
{
$this->active = false;
$this->_mapper->save($this);
}
}
Run Code Online (Sandbox Code Playgroud)
Person类应该只知道Person的东西,因此不应该包含任何与数据映射有关的东西.
请参见http://en.wikipedia.org/wiki/Single_responsibility_principle