|
|
1
11
从实体调用服务没有什么错。但是,在实例化这些服务时存在一些问题。如果遵循此路径,则必须在实体创建期间以某种方式获取服务实例,这是有问题的。 直接调用构造函数显然是个坏主意(因为它将实体耦合到服务实现)。 injecting services into entities is a bad idea . double dispatch '(有一些争论,如果这个名字是合适的)模式来解决这个问题。在这种方法中,域方法被调用方为域方法提供服务实现。在你的情况下,它看起来是这样的:
最后(但并非最不重要)的选择是使用域事件模式。你可以在网上看到 Udi Dahan's blog . 在这种方法中,实体只负责发布由适当的处理程序订阅的有意义的事件。您可以阅读所有这些技术的完整比较 on my blog .
|
|
|
2
3
这样做的坏处是您失去了域模型的隔离。 你的域模型知道电子邮件服务是纯粹的基础设施。 事件模式也会起作用。 |
|
|
3
2
我通常会从那个地方发确认信(行动?)将在何处调用from verify。如果验证的结果是发送许多确认邮件,那么我可能会
话虽如此,如果你的
|