Domain driven design DDD:这是一个工作单位吗?

Domain driven design DDD:这是一个工作单位吗?,domain-driven-design,repository,repository-pattern,unit-of-work,ddd-repositories,Domain Driven Design,Repository,Repository Pattern,Unit Of Work,Ddd Repositories,我正在尝试将DDD原则应用于构建在上的应用程序。为了抽象存储细节,我使用存储库作为聚合根,并与域签订了一份强有力的合同。这些存储库隐藏了所有的实现细节,必须是我们存储或检索聚合的唯一方式 我需要创建一个类,它将是存储的唯一入口点,并且只有以下方法: class X { public function getRepository($className) {} public function beginTransaction() {} public function roll

我正在尝试将DDD原则应用于构建在上的应用程序。为了抽象存储细节,我使用存储库作为聚合根,并与域签订了一份强有力的合同。这些存储库隐藏了所有的实现细节,必须是我们存储或检索聚合的唯一方式

我需要创建一个类,它将是存储的唯一入口点,并且只有以下方法:

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

有很多定义,尽管有些人认为它只是抽象事务的一种方式,但有些人认为它是一个非常低级的对象,知道很多关于域对象的细节(Foer-Leor的定义可能更接近于此)。


那么,我的
类X
是一个工作单元,还是这个模式有另一个名称?

是的,类X是一个工作单元。工作单元职责通常由ORM实现,但我认为将其包装到您自己的工作单元类中有一个优势。这样,您的应用程序代码就不会引用ORM,从而更难绕过工作单元和存储库