专业网站建设品牌,十四年专业建站经验,服务6000+客户--广州京杭网络
免费热线:400-683-0016      微信咨询  |  联系我们

Java为什么要区分extends和implements_数据库

当前位置:网站建设 > 技术支持
资料来源:网络整理       时间:2023/3/5 20:09:04       共计:3568 浏览
Java为什么要区分extends和implements?

不请自来~

extends和implements都是Java最基础的知识点,本来没有必要回答这个问题,但是看了一下别人的答案,基本上还是讲基本的概念,念书谁不会啊,都没有讲到两者的真正作用,特别是implements,我给大家分享分享我的体会。

解耦

implements的重要作用之一,就是为了解耦。这是什么意思呢,给大家举个例子。

由于Java的多态,接口的调用者,只需要调用接口就好了,具体接口中的功能,就让接口的实现者去实现好了。这样的好处是,避免接口的调用方直接参与接口逻辑的实现,避免调用方和实现方的关系过于紧密(修改或增加实现方的时候,还需要修改调用方的代码),这就是解耦。要注意:

如果一个接口就一个实现的话,没有必要过度设计,只会加大代码的复杂程度(不过需求未来的变化,是预测不到的)。

只有一个实现的话,也会存在迁移的问题,比如现在使用的Oracle数据库,准备迁移到Mysql数据库上,使用面向接口编程的话,只修改数据库相关的实现即可。

接口的实现不是new出来的。

举个例子(可能不是非常恰当,主要为了理解),这幅图大家应该很常见吧,这个是今日头条的登录页面:

QQ、微信都是第三方登录,那么应该设计好接口,QQ登录是一个实现,微信登录是一个实现;如果未来支持微博登录的话,那么就在增加一个实现。然后通过工厂模式获得对应的实现类,而不是直接在代码中写:if(登录方式选择QQ){实现}。

设计和实现分离

implements另外一个重要的作用,就是让设计和实现分离。制定好标准,可以让调用方和实现方各做各的,互不影响;也可以让不同的实现方,都用一个标准来实现,避免调用方的改动。

用JDBC举例,很容易理解(使用Mysql举例):

我们只看这一句:DriverManager.getConnection(URL,user,password);

JDBC连接Mysql和其他数据库的实现细节肯定不一样,如果都让java实现的话,每一种数据库都要兼容,这是不可能的。

如果完全让每个数据库的实现方写,mysql的连接方法名叫getConnect,DB2自己写的时候叫getCon,谁也不服谁,都觉得自己是最优的,这时候调用方就麻烦了。

Java(最早是sun公司)一看不行,我给你们规定好吧,都叫getConnection,你们就按照我的写,我提供接口,你们实现。

于是,当通过JDBC连接Mysql的时候,需要引入mysql的jar包,可以看到其中的代码都是实现了java.sql.Driver:

另外说两点

一流的公司做标准,这句话好理解了吧。

软件生态圈很重要,一方面的意思就是:Java做的牛了,出个JDBC的标准,各个数据库厂商都争着实现,咱自己编个啥语言出个接口,看人家理不理。

我将持续分享Java开发、架构设计、程序员职业发展等方面的见解,希望能得到你的关注。

版权说明:
本网站凡注明“广州京杭 原创”的皆为本站原创文章,如需转载请注明出处!
本网转载皆注明出处,遵循行业规范,如发现作品内容版权或其它问题的,请与我们联系处理!
欢迎扫描右侧微信二维码与我们联系。
·上一条:为什么这个数据库中text类型后面的长度是0_数据库 | ·下一条:mysql查询数组中,怎么在jsp文件中把已经读取到的MySQL数据库数据存为一个json格式字符串或对象什么的_数据库

Copyright © 广州京杭网络科技有限公司 2005-2024 版权所有    粤ICP备16019765号 

广州京杭网络科技有限公司 版权所有