我们有订购和发票子域。
我们需要访问订单才能创建发票。从发票应用程序服务访问订单的正确方法是什么?
type invoicingService struct {
orderingService OrderingService
}
func (s *invoicingService) CreateInvoice(orderID) (...) {
order, err := s.orderingService.Get(ctx, orderID)
}
type invoicingService struct {
orders OrderRepository
}
func (s *invoicingService) CreateInvoice(orderID) (...) {
order, err := s.orders.Get(ctx, orderID)
}
谢谢
从其他子域获取实体的正确方法?
通常,正确的答案是你不这样做。
也就是说,我们通常希望共享信息的副本(即:实体的当前值),但不一定也共享更改该信息的能力。换句话说,我们通常会共享价值观而不是实体。
因此,您的大多数代码都希望有一些外观来隐藏提供 orderId 如何生成发票子域所需的信息的详细信息,但该外观不一定是存储库(即,不会)必然是一个抽象,类似于内存中可变实体的集合)。