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

Java中要是一个接口只有一个实现类, 还有必要设计接口吗?

Java中要是一个接口只有一个实现类, 还有必要设计接口吗?

慕雪6442864 2019-03-21 18:15:47
其实是有关DAO接口, 我发现有很多的DAO实现类, 他们各不相同。比如DogDaoImpl类有findByBrand()、save()等方法。像save()这样的是可以抽象出来的接口。但findByBrand()却一般是该类特有的。HumanDaoImpl类总不能有个findByBrand()方法吧, 应该是findByName()这样的方法才对。所以感觉要用接口的话, 我得给每一个实现类都定义一个接口。那这样的话, 接口还有什么意义呢?请教一下, 大家一般的做法是怎么样的?
查看完整描述

5 回答

?
largeQ

TA贡献2039条经验 获得超7个赞

有必要,因为可以在你需要另一种实现的时候不用修改其他模块中既有的代码。

换而言之,是在扩展模块的需求下,将对原有代码的修改程度限制到用接口控制的耦合点之前。

举个例子:
DogDao有两个方法findByBrand和save,DogDaoMysqlImpl是存进Mysql,DogDaoXmlImpl用xml文本方式存等等。这个时候所有用DogDao接口进行耦合的代码是不依赖具体的实现的,因此可以较为轻松地将DogDao的实现从mysql迁到xml中。

业务设计的时候就把自己从实现中略略抽象出来,面向接口一方面是为了降低耦合,其实也能增强了设计思考的层次感。


查看完整回答
反对 回复 2019-04-20
?
侃侃尔雅

TA贡献1801条经验 获得超16个赞

我觉得设计的接口的意义在于用MyBatis去实现这些接口。


查看完整回答
反对 回复 2019-04-20
?
蛊毒传说

TA贡献1895条经验 获得超3个赞

需要。ioc的应用场景就是考虑到日后会变更逻辑,所以采用动态加载的方式。也就是说它假定你现在不改但以后需要改。


查看完整回答
反对 回复 2019-04-20
?
千巷猫影

TA贡献1829条经验 获得超7个赞

我觉得这个问题没有一个死答案说“有必要”或者“没必要”。而是使用接口更好。

在作为成员变量,参数,返回值以及调用的时候,都使用接口更好。而唯独只有在new的时候才写你那个具体的类。

这样做的好处就是,当你有一天发现实现有问题,或者想换一个实现,那么你只需要更改new的地方就行了。当你体会到了这个思想,那么编程就不光光是写实现,写一个过程代码,而是从功能的角度定义接口,高屋建瓴的思考需要哪些方法,哪些函数。

相关的知识机巧可以参考《Effective Java》


查看完整回答
反对 回复 2019-04-20
  • 5 回答
  • 0 关注
  • 1863 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信