从灵活性的角度来看,接口是巨大的。但是在大量客户端使用接口的情况下。向接口添加新方法,同时保持旧的mehtod完整将破坏所有客户端的代码,因为新的方法不会出现在客户端。如下所示:
public interface CustomInterface {
public void method1();
}
public class CustomImplementation implements CustomInterface {
@Override
public void method1() {
System.out.println("This is method1");
}
}
如果在稍后的时间,我们添加另一个方法到这个接口所有客户端的代码将中断。
public interface CustomInterface {
public void method1();
public void method2();
}
为了避免这种情况,我们必须在所有客户端的代码中显式实现新的方法。
所以我认为接口和这种情况如下:
>接口一旦写好就像在石头上雕刻。他们很少假设,并且预计会改变。如果他们这样做,他们带来了巨大的成本(重写整个代码),程序员应该准备好。
>继续上面的点,是否可以编写可以忍受时间测试的接口?
>如何在将来需要额外功能的接口中处理这种情况?这是预期所有客户绑定的合同的变化。
编辑:默认方法的确是一个很好的补充Java接口,很多人在他们的答案中提到。但我的问题更多的是在代码设计的上下文。如何在客户端上强制实现方法是接口的固有特性。但是接口和客户端之间的这种契约似乎很脆弱,因为功能最终会演变。