@
chaleaochexist 理论上一个 dao 不会被两个 manager 调用,这个就要从上层设计来说了,领域驱动设计(DDD)应该有了解吧,我们完整的领域对象应该包括了(属性+业务方法),大概是长这个样子:
class User {
Long id;
String name;
void saveUser(){
// so something
userDao.saveUser();
userDeptDao.saveUserDept();
}
}
后来我们觉得应该职责分离,属性和方法分开,就变成了下面这种:
class User{
Long id;
String name;
}
class UserService extends User {
void saveUser(){
// so something
userDao.saveUser();
userDeptDao.saveUserDept();
}
}
再后来我们觉得方法还可以继续拆,分为业务方法和非业务方法:
class UserManager extends User {
void saveUser(){
userDao.saveUser();
userDeptDao.saveUserDept();
}
}
class UserService extends UserManager {
void saveUser(){
// so something
userManager.saveUser();
}
}
看出来没有,我们所有的操作其实都围绕着 User 这个模型在工作,如果你有 UserAManager 和 UserBManager ,这两个都调用 UserDao 可以,但是你一个 DeptManager 调用 UserDao ,那就要考虑一下是不是你的模型设计有问题了?