【发布时间】:2019-09-12 18:58:48
【问题描述】:
我有一个关于服务层的问题 - 现在我的控制器与服务层交互,我在其中使用 EF 上下文,但有时服务方法中的业务逻辑可能非常庞大,大约 1000 行。 例如:
class OrderService {
public async Task UpdateOrder(OrderDto dto) {
if(dto.Products.Count > 3)
{
**change order status that can take 300 lines**
}
}
}
我在哪里可以保留我在 if 语句中使用的逻辑? 通常我只是在该服务中创建私有方法,但我不确定这是一个好方法。也许为此创建特定的类或类似的东西?
谢谢。
【问题讨论】:
-
可以为业务逻辑添加另一层吗?服务层可以与业务逻辑对话,业务逻辑可以与数据层对话。
-
@imAbhi 谢谢你的建议,我已经试着找到证据证明我可以像你说的那样做,但我做不到。那怎么用呢,不是我所有的方法都需要500行业务逻辑,还是不需要任何具体逻辑也总是通过业务服务调用?
-
也许考虑添加一个 OrderServiceHelper。你的班级和方法应该遵守单一职责原则en.wikipedia.org/wiki/Single_responsibility_principle 这确保你的班级只做一件事,并且把那件事做好。然后,更新顺序方法可以调用此类以在状态更改时执行逻辑。
标签: asp.net asp.net-mvc asp.net-core asp.net-web-api