1

我对 DDD 中的服务有点困惑。

首先。为什么服务总是表示为接口?这是规定吗?

为什么服务只包含一种方法?有时在单个类中实现相关方法是有意义的。

我必须为每个存储库提供服务吗?我一定是做错了什么,因为我发现自己在为 CRUD 操作提供服务。

例如,我有一个使用常用方法的存储库。如何控制对存储库中持久化对象的访问?我倾向于使用多种阅读方法来提供服务。这些服务可以检查用户角色,然后决定用户是否可以使用这些对象。我觉得我的设计有些地方不好。

4

1 回答 1

6

我假设您在谈论域服务。DDD 中还有其他类型的服务,例如应用程序服务和基础设施服务。

首先。为什么服务总是表示为接口?这是规定吗?

不,这不是规则。仅在需要时才创建接口抽象。

为什么服务只包含一种方法?有时在单个类中实现相关方法是有意义的。

可以将具有单个方法的服务视为实现单个操作 - 单个用例。如果将多个操作封装在一个对象中是有意义的,那么这也是可以接受的。但是,将多个职责合并到一个类中通常会导致违反 SRP。

我必须为每个存储库提供服务吗?

不,存储库已经是一种服务。更具体地说,可以将存储库实现视为基础设施服务。

它是调用存储库以实现某些用例的应用程序服务。它委托给域实体并协调给定操作可能需要的其他服务。查看DDD中的服务,了解各种服务交互的示例。

于 2013-03-02T17:29:38.673 回答