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

守着星空守着你
TA贡献1799条经验 获得超8个赞
@zaz@reeco@finallygo说的都是面向接口编程的优势,这些内容不需要怀疑。但根据个人的经验,感觉这是一个可以酌情妥协的设计方案。笔者一直做的都是一些小项目,有时候也用到过一些设计模式,但是题主说的这种设计,感觉对小项目来说,弊大于利,代码层数太多,多了许多没有用处的接口代码,而且,接口在编程中是起不到应有的作用,就比如@zaz所说,一个UserDao的接口可以有数个不同的实现,但是,项目小的情况下,这种情况用的还是比较少的。并且,题主既然能问出这种问题,那么我想,在题主的项目中用到dao层接口的地方应该也是很少的。面向接口编程是一种设计思想,个人感觉,所有的设计思想都应该是活的,不应该生硬的直接搬过来用。开发者首先应该理解这种思想,然后再看程序是否需要用到这种设计,没有必要的话,即使是再优秀的设计,对程序来说,也是没有多大意义的。
添加回答
举报
0/150
提交
取消