我有这样的业务逻辑,我需要重用。我的业务逻辑是这样订购的:
User.Save();
Payroll.Calculate();
Mailer.Send();
目前它在我的控制器中,但我希望它在另一个控制器中使用。我应该在哪里放置业务逻辑,如果有设计模式,它是什么?
抱歉没有问题。
答案 0 :(得分:1)
这不像第一次看起来那样简单。我会告诉回答问题的答案取决于几个因素: 1.此业务逻辑是否与其他服务交互? 2.这块业务逻辑是否需要与存储库进行交互? 3.这种商业逻辑的和平是否会影响一个实体? 和更多。取决于问题的答案,我会选择一个: 如果业务逻辑真正描述了实体应该做什么或将其移动到域模型服务,则将业务逻辑直接放到实体上。有时我使用更多层来保持一切清晰,独立和简单。
DDD的一个关键概念是Ubiquitos语言,您应该以代码中代表您的泛无处不在语言的方式编写您的域模型。因此,首先考虑您的域模型,然后考虑用于实现结果的模式。
我建议您查看Marco Pivetta's presentations,他经常会展示一些真正优秀的DDD示例。
答案 1 :(得分:0)
将应用程序服务用于plalx建议的逻辑。 您可以在下一章的最后一章中找到有关设计应用程序服务的不同选项的详细说明: https://www.amazon.com/Implementing-Domain-Driven-Design-Vaughn-Vernon/dp/0321834577
我建议你看一下六角形的架构: http://alistair.cockburn.us/Hexagonal+architecture