Java 中的接口有什么作用?

来源:互联网 发布:专利文献网络数据库 编辑:程序博客网 时间:2024/04/27 23:09
例如我定义了一个接口,但是我在继承这个接口的类中还要写接口的实现方法,那我不如直接就在这个类中写实现方法岂不是更便捷,还省去了定义接口?接口在java中的作用是什么?个人觉得只是一种规范。大家的看法呢?

1. 接口是一种规范

很好,你已经知道接口是一种规范了!

下面这张图是我们生活中遇到的接口:电源插座接口。
没错!它就是一种规范,中国2010年制定的插座标准。

2. 为什么需要规范呢?

因为有了接口规范:
  • 任何电器只有有符合规范的插头,就可以获得电力
  • 任何厂家(西门子插座,TCL插座,公牛插座...)按照规范进行制作,就能进行供电

每个厂家插座的生产技术、工艺都不一样,因为接口的implementation可以不一样,但是并不影响电器的正常工作。插座的内部实现对于电器来说是完全屏蔽的。
对于软件开发是类似的:
  • 按照接口规范进行方法调用,就能获得所期望的功能
  • 按照接口规范实现接口的的方法,就能提供所期望的功能

接下来是重点了:

  • 软件开发大多是一个协作性的工作:电器和插座分别是不同人完成的,有了接口大家就能分头开干,都按照接口来办事,各自做完就能轻松地整合到一起。各部分的测试也更加方便。
  • 软件需要不断演化:今天你用了公牛的插座,过了一年你可能换个西门子的插座,要做没有这套国家接口标准,各自为政,那估计你是换不了插座了。你想想,咱们每次去美国出差,都得带个转接头,否则就跪了,多不方便啊,因为接口规范不同啊!(这些个转接头你是不是闻道一种浓浓的Adapter模式的味道)。

3. 什么时候需要通过接口建立规范

为了抽象系统的某种公共行为,或者封装变化性,进行系统设计的时候你需要抽取出接口,这样将来你的系统将更加灵活。

而你所说的,直接写实现的方式在确定性的场景下当然也可以,不涉及到分工协作、变化性、测试方便等因素时,当然用不着接口了。比如一般情况下你犯不着为一个Pojo的getter和setter也弄个接口和实现分离。

所以面向对象的大神们孜孜不倦地教导我们说:接口和实现分离,面向接口编程
1 0
原创粉丝点击