接口是抽象
在计算机科学里,所有问题都可以通过引入一个新的抽象层来解决,除了抽象层过多这个问题本身
- 接口用途广泛;
- 接口容易被滥用;
- 接口即使有被滥用的风险,但它的重要性依旧不可替代;
接口是边界
任何一个优雅的接口后面,都有一堆龌龊的实现
- 接口是为外部设计的;
- 接口对外隐藏了内部实现;
- 接口的调用者只需要知道接口的用法,不需要关注内部实现;
- 接口的实现者在开发内部实现时,与外部环境的交互应集中体现在接口上;
接口是契约
第三方库的破坏性更新,就是契约破坏的表现
- 越是广泛使用的接口,它就越是一种契约;
- 设计接口时,应考虑哪些功能是不会轻易改变的,哪些是有可能修改的;
- 实现者应该在保持接口不变的情况下更新内部实现;
- 接口的实现者破坏契约,可能会给调用者带来成倍的风险或损失;