为了使代码更容易测试,强调使用接口而不是具体类型。我想知道为什么没有为像
答案 0 :(得分:0)
在公共API中公开接口而不是具体类型会增加在向接口添加方法时破坏其他人代码的风险。
参见例如os.File
。如果os.File
是一个接口,它将是一个具有17个公共方法的接口。添加第18个方法会破坏定义自己实现os.File
接口类型的每个人。相反,向当前os.File
结构添加第18个方法不会破坏任何采用io.Reader
,io.Writer
或任何其他定义方法子集的接口的方法。 os.File
。它还不会破坏测试代码,这些代码会模拟这些io.Reader
和io.Writer
接口。
如果您希望其他人定义他们自己的实现,请在公共API中公开接口。否则暴露一个具体的类型,让人们只使用他们需要的方法子集来定义你自己的具体类型实现的接口。