DDD: это единица работы? - PullRequest
       82

DDD: это единица работы?

1 голос
/ 13 сентября 2011

Я пытаюсь применить принципы DDD к приложению, построенному на основе Doctrine 2.1 . Чтобы абстрагировать детали хранилища, я использую репозитории для моих агрегатных корней с сильным контрактом с доменом. Эти репозитории скрывают все детали реализации и должны быть единственным способом, которым мы можем хранить или извлекать агрегаты.

Мне нужно создать класс, который будет единственной точкой входа в хранилище и который будет иметь только эти методы:

class X
{
    public function getRepository($className) {}
    public function beginTransaction() {}
    public function rollback() {}
    public function commit() {}
}

Единица работы имеет много определений, и, хотя некоторые люди думают об этом как о способе абстрагировать вашу транзакцию, другие, похоже, считают ее объектом довольно низкого уровня, зная множество деталей о вашей доменные объекты (определение Фаулера, возможно, ближе к этому).

Итак, мой class X - это Единица Работы, или у этого шаблона есть другое имя?

1 Ответ

0 голосов
/ 13 сентября 2011

Да, ваш класс X - это Единица работы.Обязанности Unit of Work обычно выполняются ORM, но я думаю, что есть преимущество в том, что они объединены в ваш собственный класс Unit Of Work.Так что в коде вашего приложения нет ссылки на ORM, что усложняет обход блока работы и хранилищ.

...