为了账号安全,请及时绑定邮箱和手机立即绑定

java 包 dao 和 dao.impl 问题

java 包 dao 和 dao.impl 问题

绝地无双 2019-04-16 20:26:56
我看MVC设计中dao层和service都说要加一个dao.impl而我在实际应用中感觉加一个dao.impl非常麻烦,比如我需要修改dao.impl还要修改dao这样不增加了负担吗?他的好处是干什么用的,一直没明白。
查看完整描述

2 回答

?
慕标5832272

TA贡献1966条经验 获得超4个赞

dao中存在是接口(interface)
dao.impl中存在的是接口的具体实现(class)
至于好处,去查查接口的定义。
更新。。。。
举个例子
dao中有
publicinterfaceUserDAO{
publicListgetUser();
}
dao.imple中
publicclassJdbcUserDaoimplementsUserDAO{
@Override
publicListgetUser(){
//dosth.
returnnull;
}
}
在往后的某一天,需要用hibernate来操作数据库的时候。
只要写一个HibernateUserDao来实现UserDAO就行了。
接口定义的是规范。并不关心具体实现。我的github上有一份自己对java各种关键字做的总结,其中关于接口在设计方面的描述是:
接口作为系统与外界交互的窗口,接口体现是一种规范。对于接口的实现者而言,接口规定了实现者必须向外提供哪些服务(以方法的形式来提供);对于接口调用者
而言,接口规定了调用者可以调用哪些服务,以及如何调用这些服务(就是如何来调用方法的)。当一个程序中使用接口时,接口是多个模块之间的耦合标准;当多
个应用程序之间使用时,接口时多个程序之间的通信标准。
从某种程度来说,接口类型整个系统中的“总纲”,它制定了系统之间各个模块应该遵循的标准,因此一个系统中的接口不应该经常改变。一旦接口改变,对整个系统
甚至其他系统的影响将是辐射式的,导致系统中大部分类需要重写。
                            
查看完整回答
反对 回复 2019-04-16
?
守着星空守着你

TA贡献1799条经验 获得超8个赞

@zaz@reeco@finallygo说的都是面向接口编程的优势,这些内容不需要怀疑。
但根据个人的经验,感觉这是一个可以酌情妥协的设计方案。笔者一直做的都是一些小项目,有时候也用到过一些设计模式,但是题主说的这种设计,感觉对小项目来说,弊大于利,代码层数太多,多了许多没有用处的接口代码,而且,接口在编程中是起不到应有的作用,就比如@zaz所说,一个UserDao的接口可以有数个不同的实现,但是,项目小的情况下,这种情况用的还是比较少的。并且,题主既然能问出这种问题,那么我想,在题主的项目中用到dao层接口的地方应该也是很少的。
面向接口编程是一种设计思想,个人感觉,所有的设计思想都应该是活的,不应该生硬的直接搬过来用。开发者首先应该理解这种思想,然后再看程序是否需要用到这种设计,没有必要的话,即使是再优秀的设计,对程序来说,也是没有多大意义的。
                            
查看完整回答
反对 回复 2019-04-16
  • 2 回答
  • 0 关注
  • 1701 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号