我记得工厂是新创建一个对象去持久化,而现在应该是仓储(Repository)里获取后加载对象去进行操作,这个时候也用工厂??而且现在注册的方法应该是另外一个仓储(Repository)的方法,如
IEmployeeRepository employeeRepository;
user.EmployeeLazyLoader = employeeRepository.FindByUserId;
因为仓储是领域对象仓库,要获取对象都要到对应的仓储里去获取,这么理解对吗?还有就是工厂里可以有仓储接口吗?
是不是我在工厂里创建两种对象创建方法,一种是数据从界面那边新生成的新对象创建,一种通过仓储从持久化介质读取后加载,他们两个是在对象生命周期的不同阶段????
而刚才我本来想这么弄
public class UserService
{
private IEmployeeRepository employeeRepository;
private IUserRepository userRepository;
public UserService(IEmployeeRepository employeeRepository)
{
this.employeeRepository = employeeRepository;
}
public void Register(User user)
{
user.EmployeeLazyLoader = employeeRepository.FindByUserId;
}
}
把它放在领域对象User对应的领域服务里去做,如上,这里不是ApplicationService(供界面调用)?这样做合理吗
另外如果不是延迟加载,可能会拉出对象树,对,刚才您说了,根据实际情况进行代码设计
又想到一个问题,我觉得仓储里加载的内容是一个聚合的内容,所以对关联的对象的加载应该是延迟加载,对聚合内的所有内容是一次性加载
又想到个问题,用户和角色之间应该就是多对多关系,而且定义成用户到角色的单向关联,用户和员工间一般是一对一,跟员工相比,用户只是可以指定多个角色,而用户只可以指定一个员工,用户和角色,用户和员工间的关系类别是一致的,只是简单的关联,而没有我标题上说的什么用户角色类,还有什么聚合....
又想到了个问题,一个聚合边界内可以一次性加载,我理解的聚合边界里面可能有多个聚合根,相对来说关联程度比较紧密,一个聚合根的所有直接关联,间接关联的都当作聚合边界之外,聚合边界之间可以延迟加载,所以尽量减少关联,我是这么理解的...老师在吗??
[该贴被hushawn于2011-12-31 17:29修改过]