场景:
在我的应用程序中(它利用了一个丰富的领域模型,其中逻辑在模型中而不是服务中),我有用户。我使用服务创建新用户。
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();
在这个方法中,需要创建一个新的相册对象并将其添加到相册列表中。但是如何创建这个新实例?使用工厂模式吗?这将需要将工厂注入到域对象中(可能会有问题)。
public void enableAutomaticGallery() {
automatic.add(automaticFactory.createAutomaticGallery(this));
}
还是我的接口定义有问题吗?我应该用其他方式定义它,这样我就不必注入工厂了吗?怎么做?