请教一个对Dao调用的封装的设计

08-03-23 saharabear
我在项目中碰到下面的一个情况:
有一个父类是BaseMember,这是一个Domain,然后分别有三个子类,为HouseMember, AgentMember, CommonMember,都继承自BaseMember.

这三个子类分别对应HouseMemberDao, AgentMemberDao, CommonMemberDao.每个dao中都有对应的save方法,分别为saveHouseMember();saveAgentMember()和saveCommonMember();

而在前台页面中,是通过一个下拉菜单确定注册的用户是属于哪一种Member.而我想实现的就是,如何设计,可以实现:
我把一个对象传进去,就可以自动寻找正确的Dao来调用.

谢谢!

banq
2008-03-24 12:08
那Dao就不要做三个,只要做一个BaseMemberDao就可以,使用Hibernate的sub-class配置自动实现。

saharabear
2008-03-24 13:52
 这就是问题的所在,因为这部分存在的问题是,我没有权力改变Dao的实现.
谢谢banq老师.

saharabear
2008-03-24 15:29
如果只有一个MemberDao,而不设计三个Dao,那么,用一个方法getMemberList(),里面使用loadAll(Member.class)获取所有Member.而有没有什么办法知道List中哪些对象是属于哪些子类?

killer
2008-03-24 19:11
MemberDao是针对抽象类型Member的操作的,没有职责去知道里面哪些对象是属于哪些子类,这个是外部调用者的职责,它调用你的方法后再去做判断。在外部可以用instanceof作判断

saharabear
2008-03-24 20:28
恩,也许我的系统中存在这个设计缺陷,因为这个地方的判断,我基本上没有权限处理,因为这个模块不在我这边.

头疼..

killer
2008-03-26 16:02
无力改变那就尝试着去适应吧,呵呵

猜你喜欢