接口是抽象

在计算机科学里,所有问题都可以通过引入一个新的抽象层来解决,除了抽象层过多这个问题本身

  • 接口用途广泛;
  • 接口容易被滥用;
  • 接口即使有被滥用的风险,但它的重要性依旧不可替代;

接口是边界

任何一个优雅的接口后面,都有一堆龌龊的实现

  • 接口是为外部设计的;
  • 接口对外隐藏了内部实现;
  • 接口的调用者只需要知道接口的用法,不需要关注内部实现;
  • 接口的实现者在开发内部实现时,与外部环境的交互应集中体现在接口上;

接口是契约

第三方库的破坏性更新,就是契约破坏的表现

  • 越是广泛使用的接口,它就越是一种契约;
  • 设计接口时,应考虑哪些功能是不会轻易改变的,哪些是有可能修改的;
  • 实现者应该在保持接口不变的情况下更新内部实现;
  • 接口的实现者破坏契约,可能会给调用者带来成倍的风险或损失;