我可以在不同业务的域服务中使用通用服务吗?
can I use generic services in domain service with different business or not?
我在创建通用域服务时遇到问题了吗??
我有 "BaseEntity" 从它继承任何实体,并且在存储库中调用更新或插入方法时每时每刻都设置值。我的域服务层实现每个实体业务。我的问题是当我有一项业务在域 service.can 中的每个服务中实施时我必须做的我使用通用 class 和接口来管理 BaseEntity 然后更改业务例如更新方法覆盖基础更新方法或我为每个实体使用一项服务 class 和一个接口与单独的业务???
在大多数情况下,我建议不要为您的域使用任何通用基础 类。如果您的层次结构为 类,那么您可能有更多的 technical/framework 域,但即便如此,您也应该支持 composition over inheritance.
例如,我不会使用 BaseEntity
,因为我觉得它是多余的。您可能会遇到的关闭可能类似于带有 T Get(Guid id)
和 void Save(T instance)
方法的 IRepository<T>
,但您必须准确考虑在何处使用此类方法。您可以通过遵循 single responsibility principle 并使用 IRepositoryGet
和 IRepositorySave
来明确您的角色。但是,这些类型的接口仅在对象之间具有广泛的共性时才有用,而这种情况通常不会发生。您 可能 发现一些 lookup 数据似乎适合这个 space 但即使在那里您可能更愿意设计一个公共存储库作为反对每种类型的单独存储库。
您绝对想避免的是拥有一个 coarse-grained 接口,然后抛出各种 NotImplementedException
。当您发现自己正在这样做时,宁愿将接口拆分为更多 fine-grained 版本并仅实现所需的接口。通过这种方式,您可以使用安全转换来确保在调用方法之前实现接口。
我在创建通用域服务时遇到问题了吗?? 我有 "BaseEntity" 从它继承任何实体,并且在存储库中调用更新或插入方法时每时每刻都设置值。我的域服务层实现每个实体业务。我的问题是当我有一项业务在域 service.can 中的每个服务中实施时我必须做的我使用通用 class 和接口来管理 BaseEntity 然后更改业务例如更新方法覆盖基础更新方法或我为每个实体使用一项服务 class 和一个接口与单独的业务???
在大多数情况下,我建议不要为您的域使用任何通用基础 类。如果您的层次结构为 类,那么您可能有更多的 technical/framework 域,但即便如此,您也应该支持 composition over inheritance.
例如,我不会使用 BaseEntity
,因为我觉得它是多余的。您可能会遇到的关闭可能类似于带有 T Get(Guid id)
和 void Save(T instance)
方法的 IRepository<T>
,但您必须准确考虑在何处使用此类方法。您可以通过遵循 single responsibility principle 并使用 IRepositoryGet
和 IRepositorySave
来明确您的角色。但是,这些类型的接口仅在对象之间具有广泛的共性时才有用,而这种情况通常不会发生。您 可能 发现一些 lookup 数据似乎适合这个 space 但即使在那里您可能更愿意设计一个公共存储库作为反对每种类型的单独存储库。
您绝对想避免的是拥有一个 coarse-grained 接口,然后抛出各种 NotImplementedException
。当您发现自己正在这样做时,宁愿将接口拆分为更多 fine-grained 版本并仅实现所需的接口。通过这种方式,您可以使用安全转换来确保在调用方法之前实现接口。