场景:在域模型对象中使用工厂?
在我的应用程序(它使用丰富的领域模型,其中逻辑在模型中,而不是在服务)我有用户。我创建新用户与服务
User newUser = userService.createNewUser("Hans Dampf");
或由于每一个电话到我的应用程序有一个用户对象直接访问从数据库
User oldUser = userDao.findByName("Hans Dampf");
得到他们,我想使用的用户对象作为我的领域模型的入口点。
每个用户可以有不同类型的图库,保存在另一个表中。
class User {
@OneToMany(fetch = FetchType.LAZY)
@JoinColumn(name = "userId")
private Set<Gallery> automatic = new HashSet<Gallery>();
}
我想要一个简单的方法来启用特定的画廊。所以,我的API会是什么样子:
User user = ... // creating or retriving user
user.enableMainGallery();
在此方法中它会necassary创建一个新的画廊对象,并把它添加到画廊的名单。但是如何创建这个新实例?使用工厂?这将需要将工厂注入域对象(可能有问题)。
public void enableAutomaticGallery() {
automatic.add(automaticFactory.createAutomaticGallery(this));
}
或者是我的接口定义有缺陷?我是否应该用其他方式来定义它,这样我就不必注入工厂了?怎么样?
在这里的帖子http://evan.bottch.com/2007/12/06/factory-and-repository-in-the-domain/它谈论工厂和DAO是如何是领域模型的一部分,我们不应该将它们视为应用程序级别的对象。我不确定我的立场,但这是另一种观点 – 2013-03-26 06:18:44