今天讲一讲C#当中的Interface,中文叫接口,但是我并不喜欢称之为接口,我更喜欢叫Interface。因为称呼为接口很容易导致歧义,比如我们的一个函数,我们可以称之为函数,方法,api或者接口。很多人习惯将方法称之为接口,本质上也没毛病。
之前看过很多文章,听到过最多的解释接口的作用的就是,接口是一种规范,其实这并没错,很多说法其实也都没错,只是说初学者能不能理解罢了。
其实在初学的时候,我建议大家在写代码之前先做需求分析,然后画类图,最后再去书写代码,因为其实本质上,我们做的就只是翻译工作,将我们的逻辑转换成代码,所以当我们的思路理清之后,语法基础又过关的情况下,那么这是肯定可以写出来的,而且画了类图之后,会使整个逻辑架构更加清晰。
而我们在画类图的时候,常常会去描述每个类中的属性和方法。我们画类图,其实就是在设计,这个类应该具有哪些方法和属性,但是我们并不知道方法具体是怎么样的,就像我现在要去一个地方,我需要坐车过去,但是具体坐什么车,的士还是摩托车?我不清楚,我的目的是要到达终点,那么我需要他能载着我到达目的地即可。所以说,这是抽象的。所以类图中的方法就是所谓的接口,我们只要他应该需要具备什么功能。所以,接口是用来做设计的。
上面说的接口是用来做设计的,但是实际上,在代码当中他好像并没有提供什么作用,还会徒增代码。但事实真的是这样吗?
上面我们说了,接口是抽象的,因此,比如还是上面的例子,我想做车,我想做的士就做的士,想做摩托就做摩托。因为声明接口时我们并没有决定做那辆车。所以我们只需要修改传入的对象即可改变行为。这就是依赖抽象而不依赖于具体。
接口算是一个比较进阶的东西,初学者要理解确实不是很容易,建议大家多画类图,多做分析。