Ple*_*onc 1 service domain-driven-design repository-pattern
我对DDD中的服务感到有点困惑.
首先.为什么服务总是表示为接口?这是一个规则吗?
为什么服务只包含一种方法?有时在单个类中实现相关方法是有意义的.
我是否必须为每个存储库提供服务?我必须做错事,因为我发现自己为CRUD操作提供服务.
例如,我有一个使用常用方法的存储库.如何控制对存储库中持久存储的对象的访问?我倾向于使用大量阅读方法提供服务.这些服务可以检查用户角色,然后决定用户是否可以使用这些对象.我觉得我的设计不好.
我假设你在谈论域名服务.DDD中还有其他类型的服务,例如应用程序服务和基础结构服务.
首先.为什么服务总是表示为接口?这是一个规则吗?
不,这不是一个规则.只在需要时才创建接口抽象.
为什么服务只包含一种方法?有时在单个类中实现相关方法是有意义的.
使用单一方法的服务可以被认为是实现单个操作 - 单个用例.如果将多个操作封装在单个对象中是有意义的,那么这也是可以接受的.但是,将多个职责合并为一个类通常会导致违反SRP.
我是否必须为每个存储库提供服务?
不是.存储库已经是一种服务.更具体地说,存储库实现可以被认为是基础结构服务.
它是一个应用程序服务,它调用存储库以实现某些用例.它委托域实体并协调给定操作可能需要的其他服务.请查看DDD中的服务,以获取各种服务交互的示例.