接口本质上就是由制定者来协调实现者和调用者之间的关系。
所以通常说的“面向接口编程”可以理解为:
只有实现者和调用者都遵循“面向接口编程”这个准则,制定者的协调目的才能达到。
面向接口编程还有一些好处:
1.一个功能的调用者只需要关心如何使用此功能,而无须关注功能的实现。
如:如我们在main 方法中调用一个client程序,我们只需要Client client = new ClientImpl(),无论 ClientImpl 类中定义了多么复杂的成员函数和成员变量(包括javadoc),你都看不到,你也无须看到。
2.面向接口编程便于团队合作,有了统一的接口(接口是公开的,里面的方法都是public的),无须担心别人的程序无法使用我的实现(他根本就不关心)。假如我们团队正在做一个计算器小程序,想要计算1+2+...+100=?,product manager 写了一个接口,让两个员工分别实现,他最后看那个程序算法算得快,于是这两个员工就对接口分别做了实现。PM只需要写一个程序就可以评估他们的算法。
public int getTime(Interface in){
int a = System.currentTime();
in.run();
return Sustem.currentTime()-a;
}
至于你说的面向接口的编程与多态的关系,我觉得,面向接口编程体现了对象的多态性,父类的引用可以指向子类的对象,一个接口可以有多个类去实现它,这样当我们不确定要用某个实现类的时候,可以用接口的引用,去指定临时通过逻辑判断所需要指向的实现类。 |