gpt4 book ai didi

domain-driven-design - 领域模型应该调用基础设施接口(interface)吗?

转载 作者:行者123 更新时间:2023-12-02 00:03:04 31 4
gpt4 key购买 nike

在洋葱架构和领域驱动设计中是否允许以下​​良好设计?

假设你有一个像这样的“Order”域类

class Order
{
INotificationService _notificationService;
ICartRepository _cartRepository;

void Checkout(Cart cart, bool notifyCustomer)
{
_cartRepository.Save(cart);
if (notifyCustomer)
{
_notificationService.sendnotification();
}
}
}

拥有基础设施的域模型调用接口(interface)是好还是坏的设计?(在本例中是notificationservice和CartRepository)

最佳答案

只有当 INotificationServiceICartRepository 接口(interface)都定义在您的Domain(Core ) 层 如果它们在运行时通过 Dependency Resolution 层(Onion 架构的最外层)的正确实现进行绑定(bind)。

请记住,在 Onion 架构中,您的 Domain 层不能引用任何库。

ICartRepository 实现显然将在您的 Infrastucture 层中完成,因为它肯定会绑定(bind)到您的数据访问层技术。
如果您的 INotificationService 实现需要与外部服务对话,那么它也会转到 Infrasrtructure。但如果它是您业务的一部分,那么它的实现可能在 Domain 层中。

关于domain-driven-design - 领域模型应该调用基础设施接口(interface)吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20152078/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com