Должен ли доменный объект содержать свой маппер? - PullRequest
2 голосов
/ 22 января 2009

Учитывая объект домена (скажем, например, Person), должен ли этот объект содержать свой Data Mapper (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);
    }
}

Ответы [ 2 ]

5 голосов
/ 22 января 2009

Класс Person должен знать только материал Person, поэтому не должен содержать ничего общего с отображением данных.

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

1 голос
/ 29 января 2009

Я немного неясен относительно связи между шаблоном DAO и шаблоном Data Mapper, но с DAO объект Person возвратил бы объект передачи с неактивным полем, установленным в true, и передал бы это назад в Person DAO заботиться о. Человек-объект вообще не должен знать о постоянстве.

...