学习架构过程中出现了几种问题:
- 部分 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.
是这样嘛?