学习架构过程中出现了几种问题:
部分 Service层 会调用 其它的Dao层, 比如 UserService 会调用 UserPositionDao UserBookDao
部分 Service层 会调用 其它的Service层, 比如 UserService 会调用 UserAppleService UserPencilService
部门 Controller层 会调用 多个Service层
按照分层设计思想来说,这样的设计是不合理的,有大神说要使用 Facade分层来避免,于是我改成了
一个 Service 只调用 一个 Dao, 且不能互相调 Service
一个 Facade 可以调用不同的 Service
一个 Controller 只能调用 一个 Facade,且不能调 Service
这样问题来了, 我在UserService里写的所有方法,是不是都要在 UserFacade里重新实现一遍,否则 Controller 没法穿透 Facade 去使用 Service的方法。
除非 Facade 与 Service 平级,Facade 只是一种特殊的 Service, 且 Controller 最多只能同时调用它自己的 Facade 与 Service.
是这样嘛?
3 回答
凤凰求蛊
TA贡献1825条经验 获得超4个赞
一般springmvc架构设计调用规范
Controller调用Service层是:一对一接口调用,且Controller层不做任何业务处理,目的是为了后续拓展直接替换Controller为RPC框架而准备
Service层避免互相调用:一般情况下事物配置在service层,为了避免事物嵌套或单个事物过大等问题的
service层调用dao层:除了尽量控制事物大小,即控制Service调用dao层的复杂度,将单个事物经量控制在100ms之内
- 3 回答
- 0 关注
- 3355 浏览
添加回答
举报
0/150
提交
取消