网易首页 > 网易号 > 正文 申请入驻

到底为什么要对面向接口开发?

0
分享至

接触java后,各种书籍、文章、平台都在强调面向接口开发的重要性。在工作中,用的最多的可能是定义IService接口,然后ServiceImpl实现,但再写了大量这样的代码后,好像并没有体会到这样的接口有什么特别的优点。

  可能很多接触java的朋友,都或多或少的有上面的这种感觉,感觉面向接口好像是解耦了,但这种解耦好像又没有什么太大的意义。结合实际开发,来总结下自己的一些认识。

  抽象和解耦

  编程领域中,非常重要的两个概念, 抽象和 解耦,这也就是面向接口开发要达到的效果。

  文章开头提到的那种接口方式,95%的场景其实是没有意义的,通常项目中service层的业务,其实是没有抽象的必要的。因为service是为web接口提供具体业务能力的,简单的web接口可能就是对参数进行一下传递,直接调用service实现就可以,所以说95%的抽象其实是没有太大意义的。

  好的抽象

  JDK中就有很多抽象,比如最常用的ListMap。Map是一个接口,基于Map接口的抽象实现有HashMap/TreeMap/Hashtable/SortedMap,Map就是一个抽象,它定义了Map类型的数据应该有的能力,如:get/put/remove/putAll/clear等等,但同样的接口方法,不同的实现类有不同的特性,比如是否允许key为null,这里就不细说了。

  有了Map的抽象,定义了统一的数据结构:只要是Map类型的对象,大家都知道get/put/remove等方法的功能是一样的,如果没有这层抽象,同样一个put功能,不同的实现是不同的人开发的,可能会有很多不同的名字put/add/set/input等等,这就会对使用这造成困扰。

  业务开发中的接口

  像底层的工具和代码,都是运用了大量的抽象,但在业务开发中似乎不需要这种过于严谨的抽象,那面向接口开发对于业务开发还有意义吗?

  有意义!!!

  上面说的service的抽象感觉很没有必要,但为了防止项目发展的过程中有这样的需要,所以基本上所有的项目,也按照接口和接口实现的方式开发,这是其中一方面。

  还有运用最多的地方就是RPC接口,RPC接口就是把业务服务抽取出一个API module,在这个modle中只定义接口、入参和出参。需要调用服务的RPC只需要引用这个API module,两个服务间约定好入参和出参,消费方不需要关注接口是如何实现的,不管生产者的实现如何升级,只要约定的接口不变,消费方就不需要有任何变化。这就利用接口,完成了解耦。如果不用接口进行解耦,那么每次生产者的内部逻辑调整,消费方就要配合升级,这无疑是噩梦。

  中间件的抽象

  项目在开发的过程中,会用到各种中间件技术,比如:缓存、数据库、文件服务器、mq等,这些中间件在随着项目的发展,不可避免的会出现技术选型更换的情况。如文件服务器可选的有:FastDFS、minio、阿里SSO、ftp文件服务器等,可能随着业务的发展,在项目初期选择的中间件产品已经不适用了,需要更换新的技术产品,如果没有进行抽象和解耦设计,将调用中间件的具体实现混杂在业务代码中,将是非常难以更换的。

  这就可以利用接口进行抽象,比如文件服务器,虽然有各种各样的产品,但在上传文件时这些参数一般是通用的,如: 文件流、文件名称、保存路径等,如果用到SSO产品可能还有桶的概念。将文件上传的功能抽象为接口,利用spring framework的依赖注入特性,业务层只需要关注接口,而不用关心具体的实现类。这样,在更换技术产品的时候,就能在不影响业务的情况下,完成技术产品的替换。

  同理,ORM框架通过一层接口抽象,就可以在对业务代码毫无影响的情况下,使用 Mybatis或者 JPA等ORM框架。缓存通过接口抽象后,也可以选择使用 本地缓存或者 Redis缓存。

  目的只有一个,将业务实现与中间件调用实现解耦。

  最后

  抽象、解耦,以及接口的使用,远远不止这些。这些只是个人工作期间的一些简单的思考,在这里分享一下,如果有什么不正确的理解欢迎大家指正。

  福利

  IT架构师/技术大咖的交流圈子,为您提供架构体系知识、技术文章、流行实践案例、解决方案等,行业大咖分享交流/同行经验分享互动,期待你的加入!扫码即可加入哦

  随着材料不断增多社群会不定期涨价早加入更优惠

  公众号发送如下关键字获取免费资料:

  1.架构电子书视频--回复"架构"

  2.架构实践案例集--回复"实践"

  3.Docker实战文档--回复"docker"

  4.技术架构规划文档--回复"规划"

  5.华为鸿蒙技术资料--回复"华为"

  免责声明:

  本号部分分享的资料来自网络收集和整理,所有文字和图片版权归属于原作者所有,且仅代表作者个人观点,与本号无关,文章仅供读者学习交流使用,并请自行核实相关内容,如文章内容涉及侵权,请联系后台管理员删除。

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
越南新主席苏林,和中方大使见完面,转头要和美国强化关系

越南新主席苏林,和中方大使见完面,转头要和美国强化关系

剑哥的思政课
2024-06-15 11:22:45
iPhone 16会杀死大模型APP吗?

iPhone 16会杀死大模型APP吗?

字母榜
2024-06-15 11:56:07
官宣:5月汽车品牌销量完整版,比亚迪25万,丰田12万,海马仅16辆

官宣:5月汽车品牌销量完整版,比亚迪25万,丰田12万,海马仅16辆

户外小阿隋
2024-06-16 09:04:57
完蛋了,国民党再无重新执政的机会

完蛋了,国民党再无重新执政的机会

雪中风车
2024-06-13 05:04:09
16年,136场,西班牙恐怖纪录终结,换了活法:克罗地亚无言的痛

16年,136场,西班牙恐怖纪录终结,换了活法:克罗地亚无言的痛

风过乡
2024-06-16 07:00:43
某大佬:比赛含金量不够,不具升学价值,预赛比较水,48小时开卷

某大佬:比赛含金量不够,不具升学价值,预赛比较水,48小时开卷

杂谈哥闲谈
2024-06-15 22:47:24
很严重了,我劝大家极限存钱吧,从现在开始!

很严重了,我劝大家极限存钱吧,从现在开始!

大忘路
2024-06-12 07:32:37
窝里横的中国新造车全数被宝马碾压,奔驰、丰田也起来了

窝里横的中国新造车全数被宝马碾压,奔驰、丰田也起来了

柏铭锐谈
2024-06-15 12:32:29
大s后悔了吗?具俊晔马尼拉酒吧商演放“流星雨”无人问津!

大s后悔了吗?具俊晔马尼拉酒吧商演放“流星雨”无人问津!

综艺拼盘汇
2024-06-16 01:06:07
注意:6月底前赶紧卖房!

注意:6月底前赶紧卖房!

山丘楼评
2024-06-13 23:09:37
中国女排获得奥运会名额,全队疯狂庆祝,唯独少了朱婷,评论炸锅

中国女排获得奥运会名额,全队疯狂庆祝,唯独少了朱婷,评论炸锅

林子说事
2024-06-15 13:23:12
杀气腾腾!美俄核潜艇古巴对峙,美对华态度急转弯,望中美共存

杀气腾腾!美俄核潜艇古巴对峙,美对华态度急转弯,望中美共存

战域笔墨
2024-06-15 18:50:53
西方突然发现,美国对中国赶尽杀绝的关税政策,反而帮了中国大忙

西方突然发现,美国对中国赶尽杀绝的关税政策,反而帮了中国大忙

蓝色海边
2024-06-15 18:42:40
解放军中将在京突然去世,两女儿定居美国,亲弟弟关联25家公司

解放军中将在京突然去世,两女儿定居美国,亲弟弟关联25家公司

求实者
2024-06-12 14:30:22
敛财4.5亿的正部级痛骂自己:要钱干什么,埋自己啊!被判死缓

敛财4.5亿的正部级痛骂自己:要钱干什么,埋自己啊!被判死缓

天闻地知
2024-06-15 14:11:55
国际排联认证张常宁改格局:大V盛赞蔡斌抉择 一传拦网防守皆强势

国际排联认证张常宁改格局:大V盛赞蔡斌抉择 一传拦网防守皆强势

颜小白的篮球梦
2024-06-16 08:55:45
伊万:孙兴慜身价是我们全队的50倍,但我们在很多方面限制了他

伊万:孙兴慜身价是我们全队的50倍,但我们在很多方面限制了他

直播吧
2024-06-15 19:33:36
为什么劝女人少穿“丝袜”出门?看完些真实街拍图,你就全明白了

为什么劝女人少穿“丝袜”出门?看完些真实街拍图,你就全明白了

潮人志Fashion
2024-06-13 17:40:15
99年,女子被推土坑活埋,死前哀求:求你放了我,女儿还在家等我

99年,女子被推土坑活埋,死前哀求:求你放了我,女儿还在家等我

星辰故事屋
2024-06-11 13:32:59
郭碧婷参加《浪姐》后 越来越瘦 越来越漂亮

郭碧婷参加《浪姐》后 越来越瘦 越来越漂亮

综艺拼盘汇
2024-06-16 06:16:13
2024-06-16 11:12:49
IT架构师联盟
IT架构师联盟
IT架构实战分享
687文章数 7654关注度
往期回顾 全部

科技要闻

iPhone 16会杀死大模型APP吗?

头条要闻

40余套房屋涉嫌"一房多卖" 有购房者内心积郁因病去世

头条要闻

40余套房屋涉嫌"一房多卖" 有购房者内心积郁因病去世

体育要闻

没人永远年轻 但青春如此无敌还是离谱了些

娱乐要闻

江宏杰秀儿女刺青,不怕刺激福原爱?

财经要闻

打断妻子多根肋骨 上市公司创始人被公诉

汽车要闻

东风奕派eπ008售21.66万元 冰箱彩电都配齐

态度原创

教育
家居
健康
亲子
公开课

教育要闻

计算机专业,会是下一个土木吗?

家居要闻

空谷来音 朴素留白的侘寂之美

晚餐不吃or吃七分饱,哪种更减肥?

亲子要闻

家庭教育争议:青春期孩子该如何管教?

公开课

近视只是视力差?小心并发症

无障碍浏览 进入关怀版