面向接口编程详解!

今天同学问我我一个问题,他问我面向接口编程有什么好处?

好吧!首先要说接口的含义:

1、它是一个规则的集合,它规定了实现该接口的类或者接口要遵守这些规则。

  换句话说,在现实世界中他体现了(如果你是.....你必然会......)这样的理念,比如说我定义了一个Person接口,在该接口中有一个抽象方法eat,那么就可以解释为:如果你是一个人你必然会吃。

2、接口是对同类事物的共同特点的抽取

  例如,在我眼中,我是一个人,我和一头猪有着本质的区别。但是在一个动物学家的眼里,我和一头猪没有什么区别,我们都属于动物,也就是说动物学家在研究人和猪的行为时。他们不会对我们进行区别对待,我们都属于IAnimal接口。

  现在换了一个遗传学家,情况又不同了,因为生物都能遗传,所以在他眼里,我不仅和猪没区别,和一只蚊子、一个细菌、一颗树、一个蘑菇乃至一个SARS病毒都没什么区别,因为他会认为我们都实现了IDescendable这个接口(注:descend vi. 遗传)。

好了那么现在面向接口编程有什么好处呢?

首先我们要明白项目中的层次关系和依赖关系,每层不是直接向上层提供服务,而是通过每层定义的接口,向上暴漏其接口的功能,上层对下层仅仅是接口的依赖,而不是具体依赖某一个类。

1、系统的灵活性得到提升,便于维护和拓展。

  当下层需要改变时,只要接口及接口的功能不变,上层不用做修改。

  有时候甚至我们可以完全修改下层实现。就比如我不想用u盘了。我想用移动硬盘,那你只用把u盘拔了,插上移动硬盘就行了。

2、松耦合

 

 

参考:http://www.cnblogs.com/leoo2sk/archive/2008/04/10/1146447.html

原文地址:https://www.cnblogs.com/zyh1994/p/5534368.html