hhq1991的gravatar头像
hhq19912018-06-13 09:11:12

java面向接口编程有什么好处?

做java开发也快两年了,一直都没太理解java的面向接口开发的好处是什么,为什么要先定义接口,再用一个实现类去实现,DAO层也是。

所有回答列表(9)
木鱼酱的gravatar头像
木鱼酱 LV56月15日

请参考设计模式,重点理解什么是抽象、抽象的作用以及抽象的重要性。

本质通俗的讲其实就是:封装变化,把实现封装成一个简单暴露的接口提供给外部调用,外部不需要关心我们内部是怎么实现的,即使我们以后内部实现逻辑改了,外部其实是不受影响的。另一方面利用了Java的多态特性,同一个接口或是抽象类可以有多个实现类,这样不仅定义接口简洁,在实际调用的时候还可以方便的选取不同实现类。

 

评论(0)最佳答案
竹子_Dexter的gravatar头像
竹子_Dexter LV36月14日

面相接口开发可以节省大量的内存,使用java中的控制反转,之前需要自己实例化的对象现在交给方法的调用者。

IT界小蚂蚁的gravatar头像
IT界小蚂蚁 LV66月14日

代码规范,实现你做你的,我做我的,我们之间使用接口规范关联。还有就是减少代码重复。

1172785783的gravatar头像
1172785783 LV26月21日

封装什么的

李旭冰的gravatar头像
李旭冰6月23日

与工厂类(反射)和配置文件的配合使用,能够最大程度的实现代码的解耦,方便以后的代码维护与升级,当需要更改功能、增强功能能的时候,只需要更改配置文件和增加新的class文件就能实现,而不必去更改该源代码。

另一个是可以约束程序开发过程中的代码规范问题。

lonesafe的gravatar头像
lonesafe LV116月27日

这个涉及到了工厂类是如何实现的,你可以百度一下。再一个就是代码耦合性的问题。

yangzheng7644568的gravatar头像
yangzheng7644568 LV97月2日

我引用 java编程思想 这本书持有对象这章中的一段话来回答这个问题吧, List<Apple> apples = new ArrayList<Apple>(); 这段代码中,ArrayList已经被向上转型为List 直接使用List接口的目的在于如果你决定修改你的实现,你所需要的只是在创建时修改他,就像下面,List<Apple> apples = new LinkedList<Apple>(); 因此,你应该创建一个具体类的对象,将其转型为对应的接口,然后在其余代码中都使用这个接口.  

但是这种方法并不是总是奏效的,因为实现类可能会有自己特有的功能,例如LinkedList具有在List接口中包含的额外方法,TreeMap也具有Map接口中包含的方法,如果使用了实现类特有的方法,就不能将他向上转型为更为通用的接口了.

所以,我觉得面向接口的思想是为了代码的健壮性和适用性.

Ares_xue的gravatar头像
Ares_xue LV57月13日

如果你是说架构代码,那么接口最大的好处就是封装行为且是你不必关注实现的行为,每个接口是一系列业务相关的行为的集合,这使得代码的扩展性、可读性还是复用性都有很大的提升。

如果说的普通的service层,目前来说确实是被滥用了,一个接口对应一个实现这使得接口所谓的复用性成为一个笑话,一个只有一个实现的接口其存在的意义大幅降低,如果想作为规范,那么我们只需要写一个实现编译器通过自动推断帮我们加上接口岂不更好?(同样的还有set、get方法,如果想作为规范编译器也完全可以自己推导)现在的使用情形如果涉及到方法名的修改,方法的新增等接口和实现都要改一遍,对开发期相当不友好。

zl9801的gravatar头像
zl9801 LV108月7日

我觉得最大好处就是,可以用框架了,如果你不用面向接口编程,就不能用框架,所以最大的好处就是,必须按框架规范去写代码。 

顶部客服微信二维码底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友