Go笔记 - 什么时候要定义接口类型?

397 阅读1分钟

Go的接口为我们提供了方便的duck typing能力,提供强有力的抽象能力。而且定义和使用接口也是非常方便,实现某个接口也不需要显式声明。宽松的规则能方便编码的同时,也会出现滥用的情况。


那什么时候要定义接口类型呢?

  • 当需要用户提供内部实现细节时。如:http的handler,线程池的回调函数等。

  • 当对外的API有多个内部实现的时。如:标准库的ReaderWriter等有文件系统IO实现,网络IO实现,缓冲区IO实现等。

  • 当部分API需要解耦扩充时。如:数据存储功能需要添加其他存储方式,需要对现有部分功能进行解耦扩充。


那什么时候不要定义接口类型?

  • 接口定义的函数与类实现的函数完全一致时。
  • 不要为了测试,特意定义接口。
  • 标准库有相同行为的接口类型时。
  • 犹豫要不要用定义接口类型时。