遇到公司,基本都这么写,我感觉dao这个接口没卵用啊,就是生命一个接口里面的方法,总不会说别人给你写个dao,然后你去实现方法吧
遇到公司,基本都这么写,我感觉dao这个接口没卵用啊,就是生命一个接口里面的方法,总不会说别人给你写个dao,然后你去实现方法吧
1
ieiayaobb Jul 23, 2015 好听点就是分层解耦,层次清晰,利于重构。难听点就是java版本的八股
|
2
chocotan Jul 23, 2015
因为你遇到的只有一个实现
|
4
incompatible Jul 23, 2015
为Dao写接口的确是件然并卵且蛋疼的事情。
为Service写接口还是有必要的。 比如一个调用外部资源的服务,在开发和测试时可以使用MockImpl,在生产环境里可以用ProductionImpl。 再比如当项目规模变大、需要做服务化的时候,要实现RMI,就要有接口。 |
5
qiayue PRO 比如数据库连接,可能有 MySQL 也可能有 Oracle 还可能是直接自己读写文本文件
每一种都是一种实现 |
6
kaedea Jul 23, 2015
如果你只有一个实现方案的话,可以不用接口啊;
但是接口还有个功能就是方便后面的人理解业务。 |
7
ob Jul 23, 2015
等你遇到需要多种实现的时候就知道用处了。
|
8
idamien Jul 23, 2015 因为你接触的项目可能在起步阶段, 实现可以使用不同的数据库,另外接口可以方面以后做单元测试 mock.
另外一个比较严重的问题就是你说java mvc, DAO不属于mvc 你们有service 有 dao,所以架构上是mvc 3-tiers,不是单纯的mvc |
9
qw7692336 Jul 23, 2015
我觉得有ORM框架的话,就没有必要DAO了。
至于service,其实很多人建议把service的业务逻辑写在domain model。 |
10
powerfj Jul 23, 2015
瞬间创造了无数的工作..
|
11
thinkmore Jul 23, 2015
这样才有工作量嘛。。。其实如果换了数据库实现就需要dao了,毕竟orm不能完全解决我们的问题,当然大部分时候都是可以的
|
12
sjtlqy Jul 23, 2015
装逼用的,呵呵
|
13
sohoer Jul 23, 2015
面向接口,主要也是为了方便以后扩展
|
14
mgcnrx11 Jul 23, 2015
有多少项目,会写着写着就换了一个数据库的呢?Dao还真必要性不大
|
15
EVA1992 Jul 23, 2015
八股文
|
16
otakustay Jul 23, 2015
直到3年前我也以为是八股
有些事,不是你自己写上百万行代码,删上几十万行代码,别人怎么说你都不会明白的 |
17
FrankFang128 Jul 23, 2015 这是过早优化或者是恰当优化
|
18
hitsmaxft Jul 23, 2015 via iPhone
是因为你没见过代码崩坏的项目
|
19
happypy1 Jul 23, 2015
刚在读effective java,正好讲到了interface与class,我就说说我的感受。
dao和service这些其实都是抽象你的逻辑层从而达到高内聚和低耦合的概念,便于日后的维护。举个生活中的例子,家用电源的三头插口,这是一个业界标准(接口),家电生产商不需要管这个三头插背后是怎么实现的,他们只需要知道,插上这个接口,他们的电器就会有220伏特的电能供应。Java里面的collection也是一个遵循这种设计的典范,List抽象了所有具体List(ArrayList, LinkedList)的接口,当你创建一个List的时候,根据你的需求(性能?容量?唯一性?)赋予它不同的实现,但是变量仍然是List这个类型,这样如果以后你要改动这个变量的实际类型,你就只需要改动赋值的那行,否则的话,你还要到处找到调用这个变量的地方进行修改。 说了这么多话,其实就是方便日后的维护和扩展。 |
20
cloudhunter Jul 23, 2015
对于 spring mvc 来说,interface 规定了方法签名,框架才能放心大胆的把各种 IoC,class 增强的黑魔法玩出花样。
|
21
yakczh Jul 23, 2015
所以说php是最好的语言,就是这么来的
|
22
yakczh Jul 23, 2015
php一样写dao 一样写service,但不用写daoimpl serviceimpl 瞬间让很多java程序员失业了
|
23
vietor Jul 23, 2015 via Android
是一种累赘,十几年前流行的方法论,现在不入流了。
|
24
GeBron Jul 23, 2015
用了 mybatis 之后就不用写 daoimpl 了……
|
25
iyangyuan Jul 24, 2015 via iPhone
都说dao层抽象之后可以无缝切换数据库,什么情况下才会换数据库呢?求教
|
26
north521 OP 总结了一下答案,90%的项目不需要写,真等到重构了,用ide工具分分钟抽取出来
|
27
phx13ye Jul 24, 2015
Dependency Inversion principle: Depend upon abstractions. Do not depend upon concrete classes.
|
28
donyee Jul 24, 2015
小项目都不需要这么写了吧,数据库一般也不会切换;
|
29
FrankFang128 Jul 24, 2015 @iyangyuan 基本不会切数据库,就算切,工作量也不在这几个类那里 XD
|
31
RagingSweet Jul 24, 2015
楼上一群人不要误导人好伐,这样提炼接口是为了使用JDK的动态代理
|
32
north521 OP @RagingSweet 比如?
|
33
RagingSweet Jul 27, 2015
@li24361 比如什么?JDK自带的动态代理必须要接口
|
34
incompatible Jul 28, 2015 via iPhone
@li24361 比如事务的实现啊
|