获得徽章 0
- 之前也发过好多贴, 看过好多贴, 还是没有彻底搞懂。
简单来说 controller service dao 三层。
controller 和 service 之间的分层相对比较清晰, 业务逻辑和显示逻辑的拆分, 譬如 MQ/http/RPC 和业务分离。
service 和 dao 的区分我有点搞不懂。主要是因为分不清什么是存储逻辑(非业务逻辑)什么是业务逻辑。 尤其是加入了 manager 层之后。
因为是 python 后端, 所以很自然的将业务逻辑加到 Model 上。 (我理解这里的 Model 是指业务 Model ) UserModel.is_super() 带业务的查询。
或者
UserModel.objects.all() 原生将 permissons,groups ,Commany,等等一起都带过来了。
或者
UserModel.*** 做一些跨表的操作。
我的问题:
什么是业务逻辑, 什么是非业务逻辑。
我的理解是,客户看不到的逻辑都算非业务逻辑, 譬如
1.1 表结构,表关联关系等。
UserManager.delete()和DepartmentManager.delete() 这俩可以同时包含删除关联关系表( UserDeptModel )的能力。不是二取一。 同理 save 也是。 如果没有 manager 层, 那么我的理解 Dao 是可以做连/跨表操作的,只要这个跨表操作和业务无关,没必要在 service 调用两次 dao 。
```
class UserManager:
def delete():
UserDao.delete()
UserDeptDao.delete()
class DepartmentManager:
def delete():
DepartmentDao.delete()
UserDeptDao.delete()
```展开1点赞