初学者总认为接口没多大用处,反正不用又不会死。
我举个例子,你大概可以明白接口是非常有意义的:
我要设计一个海量文本分析系统,比如从一个网页的源代码中抽取出需要的数据。
我一个人把这个项目从头写到尾是不现实的,因为要实现的东西极多,由我设计,然后让别人去实现细节。
所以,我定义了一堆接口。
比如,在我设计的时候,我并不知道到时候从文本中分析出来的结果到底有哪些字段,所以我就定义一个接口,声明这个接口的实例就是分析出来的结果。
那么等到我把项目设计好,别人拿去看的时候,就可以很明白地知道,他要按照他自己的需求,实现这个接口。
我在我编写的核心流程中,也会清楚地知道,他传递过来的是我要的那种东西,这个东西一定会有个啥方法可以被我调用。
这几个方法调用完就可以实现我的流程。
那么,这样,我就实现了我对于整个项目流程的掌控,因为流程是我写的。
别人只是实现每个点的具体内容,就算不理解全部需求,也不会使项目走偏。
但是具体每个方法怎么实现我就不用亲自写了,只要告诉他们,这个方法要做怎样一件事,他们去实现这件事,就妥了。
再打个比方。
我在代码中编写好了流程:
1.水壶拿到洗手间
2.装水
3.拿到厨房
4.打开炉子
5.烧
就会有开水。
这是我写好的流程,里面的对象全部用接口。
这个时候我是并不知道要多大个壶、装多少水、到厨房的过程是提到厨房还是挑到厨房、用多大的炉子、多大的火等信息的。
别人拿到我的代码之后一看,就会知道,首先,要按照我的接口实现一个水壶,然后水壶有“拿到洗手间”这么一个方法。
他就会去实现这些细节,根据自己的需求去编写怎么拿过去的实际过程。
这是我在项目中经常使用接口的一个场景,你感受一下。