极客视点
极客时间编辑部
极客时间编辑部
113241 人已学习
免费领取
课程目录
已完结/共 3766 讲
2020年09月 (90讲)
时长 05:33
2020年08月 (93讲)
2020年07月 (93讲)
时长 05:51
2020年06月 (90讲)
2020年05月 (93讲)
2020年04月 (90讲)
2020年03月 (92讲)
时长 04:14
2020年02月 (87讲)
2020年01月 (91讲)
时长 00:00
2019年12月 (93讲)
2019年11月 (89讲)
2019年10月 (92讲)
2019年09月 (90讲)
时长 00:00
2019年08月 (91讲)
2019年07月 (92讲)
时长 03:45
2019年06月 (90讲)
2019年05月 (99讲)
2019年04月 (114讲)
2019年03月 (122讲)
2019年02月 (102讲)
2019年01月 (104讲)
2018年12月 (98讲)
2018年11月 (105讲)
时长 01:23
2018年10月 (123讲)
时长 02:06
2018年09月 (119讲)
2018年08月 (123讲)
2018年07月 (124讲)
2018年06月 (119讲)
时长 02:11
2018年05月 (124讲)
时长 03:16
2018年04月 (120讲)
2018年03月 (124讲)
2018年02月 (112讲)
2018年01月 (124讲)
时长 02:30
时长 02:34
2017年12月 (124讲)
时长 03:09
2017年11月 (120讲)
2017年10月 (86讲)
时长 03:18
时长 03:31
时长 04:25
极客视点
15
15
1.0x
00:00/03:16
登录|注册

真正懂接口设计的人才是稀缺型人才

讲述:初明明大小:2.99M时长:03:16
好的系统架构离不开好的接口设计,因此,真正懂接口设计的人往往是软件设计队伍中的稀缺型人才。最近,阿里巴巴国际化事业部高级技术专家张建飞发文介绍了接口的好处、使用接口的背景和场景以及如何通过依赖倒置来实现面向接口,原文如下。

接口有什么好处

在我看来,接口在软件设计中主要有两大好处。

1. 制定标准

标准规范的制定离不开接口,制定标准的目的就是为了让定义和实现分离,而接口作为完全的抽象,是标准制定的不二之选。
这个世界的运转离不开分工协作,而分工协作的前提就是标准化。试想一下,你的电脑能允许你把显卡从英伟达换成七彩虹,你把数据从 Oracle 换成了 MySQL,而你你基于 JDBC 写的代码都不用动。这些事情的背后都是因为接口,以及基于接口定制的标准化在起作用。
在 Java 的世界里,有一个很棒的社区叫 JCP( Java Community Process),就是专门通过 JSR(Java Specification Request)来制定标准的。正是有了 JSR-315(Java Servlet),我们服务端的代码才能在 Tomcat 和 Jetty 之间自由切换。
最后,我想用一句话来总结一下标准的重要性,那就是:“一流的企业做标准,二流的企业做品牌,三流的企业做产品。”

2. 提供抽象

除了标准之外,接口还有一个特征就是抽象。正是这样的抽象,得以让接口的调用者和实现者可以完全的解耦。
解耦的好处是调用者不需要依赖具体的实现,这样也就不用关心实现的细节。这样,不管是实现细节的改动,还是替换新的实现,对于调用者来说都是透明的。
这种扩展性和灵活性,是软件设计中,最美妙的设计艺术之一。一旦你品尝过这种“依赖接口”的设计而带来的美好,就不会再愿意回到“依赖实现”的简单粗暴的场景了。平时我们说的“面向接口编程原则”和“依赖倒置原则”都是前者这种设计。
另外,一旦你融会贯通地掌握了这个强大的技巧,即面向抽象、面向接口,你会发现,虽然面向实现和面向接口在代码层面的差异不大,但其背后所隐含的设计思想与设计理念之间的差异,不亚于我的篮球水平和詹姆斯篮球水平之间的差异。
作为一名资深职场老兵,我强烈建议你在做系统设计、模块设计、甚至对象设计的时候。要多考虑考虑更高层次的抽象,也就是接口,而不是一上来就陷入到实现的细节中。你要清楚地意识到接口设计是我们系统设计中的主要工作内容。而这种可以跳出细节内容,站在更高抽象层次上,来看整个系统的模块设计、模块划分、模块交互的人,正是我们软件设计队伍中,非常稀缺的人才。有时候,我们也管这些人叫架构师。
以上就是接口的好处,以及为什么说懂接口设计的人才是稀缺型人才的原因。由于篇幅受限,使用接口的背景和场景以及如何通过依赖倒置来实现面向接口,将在下文分享,欢迎持续关注。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结
该免费文章来自《极客视点》,如需阅读全部文章,
请先领取课程
免费领取
登录 后留言

全部留言(4)

  • 最新
  • 精选
  • Harvey
    阿里终于有人能提一下面相对象的概念了,不过提到的这两点好处有什么区别吗?都只是看到了接口带来的抽象的好处,实现可以轻松替换。阿里真懂面相对象设计的人还真不多。
    3
  • Xg huang
    其实这些面向对象的设计原则并不复杂,很好理解。但为啥很多开发人员在开发的过程中并没有坚持下来? 我觉得有一个原因是缺乏对业务的抽象能力锻炼,而缺乏锻炼的主要原因是他们没有在实际开发中意识到这个部分的重要性或者因为开发的压力导致没有坚持下来。 不断阅读这类型文章对我而言还是很有益处的,不仅可以复习一下知识点,而且还可以提醒自己要保持对业务抽象能力的锻炼
    2
    1
  • 完美世界
    业务时间紧张,有时候未必有时间做那么多接口设计。直接对接实现,反而更容易。过多接口,很容易过度设计,导致一些接口只有一个实现,甚至永远用不到。
  • Expif
    业务开发都在完成交付了
收起评论
大纲
固定大纲
接口有什么好处
1. 制定标准
2. 提供抽象
显示
设置
留言
4
收藏
99+
沉浸
阅读
分享
手机端
快捷键
回顶部