发帖    主题    评论    推荐    标签    作者    订阅    查搜    注册   登陆   关注
 
面向对象 设计模式 领域驱动设计 企业架构 框架 开发教程 微服务 大数据 扩展性 并发编程 事件驱动 分布式 SOA
1 2 3 4 ... 11 下一页 Go 11

一个困惑的关于域建模的若干个问题

    
2004-10-22 09:44
赞助商链接

一个User类:

public class User{
private int ID;
private String name;
private String password;
private int GroupID;
....
public void setPassword(String password){
...
}
public void changePassword(String password){
...
}
....
}

问题1:新增一个用户,从域模型角度去看其实就是new User(),而修改用户密码就setPassword();而从另一个角度看,修改密码却可以看成User类的一个行为,可以为User类设计一个方法changePassword(),新增用户可以用一个createUser(User user)来实现。那么具体的实现在实际项目中怎样进行取舍选择?
问题2:如果使用createUser(User user)这种方式实现,那么createUser的方法应该不能放到User类中了,毕竟对象不能自己create自己,可是实体bean似乎就是这样的方式实现create??为什么??
问题3:既然User类不能create自己,那么创建一个UserManager类,包含createUser方法,这种情况下,User类的changePassword方法是否也放到UserManager类中?
问题4:如果使用new User方式来创建用户,那么删除用户的操作用什么方式进行?
问题5:怎么理解实体bean?他是域对象建模的结果么?那么怎么理解实体bean的create,remove?自己可以create,remove自己?

2
2004-10-22 10:37

请banq大虾提提建议?

2004-10-24 13:32

看了几天没人回答,我就来试试吧,我也是新手,呵呵,共同探讨。

User是个domain model,你可以用DAO模式去操作这个model
创建一个UserDAO,就是你自己的UserManager。

public interface UserDAO {
public Customer createUser(...);
public boolean updateUser(...);
public boolean deleteUser(...);
public Collection selectUser(...);
}

2004-10-25 07:54

可是DAO只不过应该充当一个域模型和数据源之间的中介。DAO的作用不就是为域模型提供底层数据源屏蔽么。

2004-10-25 13:23

User中不应该有public void changePassword(String password){方法

使用UserManger来创建管理User,实体Bean是域模型的一个实现结果。实体Bean中有的create,remove方法,其实这两个方法不是对Model操作,而是管理实体Bean自己的,不是操作User的。

实体bean或EJB如同一个载体,例如是太空船等,具体Model放在太空船中,是船中货物,那么对于Model来讲,船是载体,载体自己有自我管理的能力,如发动:create;停止:remove,是不是类似有生命体一样,可以自己活动的,所以对于EJB经常又有生命周期的说法。

不知是否理解?

11Go 1 2 3 4 ... 11 下一页

赞助商链接

赞助商链接

返回顶部

移动版 关于本站 使用帮助 联系管理员 最佳分辨率1366x768
OpenSource JIVEJDON Powered by JdonFramework Code © 2002-20 jdon.com