需要复用的业务逻辑,应该放在哪里?
Business logic that needs to be reused, where should I placed it?
我有这样的业务逻辑需要重用。我的业务逻辑是这样排序的:
User.Save();
Payroll.Calculate();
Mailer.Send();
目前它在我的控制器中,但我希望它在另一个控制器中使用。我应该在哪里放置该业务逻辑,如果有设计模式,它是什么?
抱歉这个菜鸟问题。
将应用程序服务用于 plalx 建议的逻辑。
您可以在以下书籍的最后一章中找到对设计应用程序服务的不同选项的很好解释:
https://www.amazon.com/Implementing-Domain-Driven-Design-Vaughn-Vernon/dp/0321834577
我还建议看看六边形建筑:
http://alistair.cockburn.us/Hexagonal+architecture
这不是第一次看起来的简单问题。我会告诉 WHERE 问题的答案取决于几个因素:
1. 这段业务逻辑是否与其他服务交互?
2. 这段业务逻辑需要和repositories交互吗?
3. 这种业务逻辑的和平是否会影响不止一个实体?
和更多。取决于我会选择一个问题的答案:
如果业务逻辑确实描述了实体真正应该做什么,则将其直接放入实体或将其移至领域模型服务。有时我会使用更多层来保持一切清晰、独立和简单。
DDD 的一个关键概念是 Ubiquitos 语言,您应该按照它在代码中代表您的 Ubiquitos 语言的方式来编写您的领域模型。因此,首先考虑您的域模型,然后考虑用于实现结果的模式。
我建议你检查一下 Marco Pivetta's presentations,他经常展示一些非常好的 DDD 示例。
我有这样的业务逻辑需要重用。我的业务逻辑是这样排序的:
User.Save();
Payroll.Calculate();
Mailer.Send();
目前它在我的控制器中,但我希望它在另一个控制器中使用。我应该在哪里放置该业务逻辑,如果有设计模式,它是什么?
抱歉这个菜鸟问题。
将应用程序服务用于 plalx 建议的逻辑。 您可以在以下书籍的最后一章中找到对设计应用程序服务的不同选项的很好解释: https://www.amazon.com/Implementing-Domain-Driven-Design-Vaughn-Vernon/dp/0321834577
我还建议看看六边形建筑: http://alistair.cockburn.us/Hexagonal+architecture
这不是第一次看起来的简单问题。我会告诉 WHERE 问题的答案取决于几个因素: 1. 这段业务逻辑是否与其他服务交互? 2. 这段业务逻辑需要和repositories交互吗? 3. 这种业务逻辑的和平是否会影响不止一个实体? 和更多。取决于我会选择一个问题的答案: 如果业务逻辑确实描述了实体真正应该做什么,则将其直接放入实体或将其移至领域模型服务。有时我会使用更多层来保持一切清晰、独立和简单。
DDD 的一个关键概念是 Ubiquitos 语言,您应该按照它在代码中代表您的 Ubiquitos 语言的方式来编写您的领域模型。因此,首先考虑您的域模型,然后考虑用于实现结果的模式。
我建议你检查一下 Marco Pivetta's presentations,他经常展示一些非常好的 DDD 示例。