在这里,我们展示了一个示例,其中 Go 的接口 使得重构一些现有代码变得容易,使其更加灵活和可扩展。最初,标准库的RPC 包使用称为gob 的 自定义有线格式。对于特定的应用程序,我们希望使用JSON 作为替代有线格式。
我们首先定义了一对接口来描述现有有线格式的功能,一个用于客户端,一个用于服务器(如下所示)。
type ServerCodec interface {
ReadRequestHeader(*Request) error
ReadRequestBody(interface{}) error
WriteResponse(*Response, interface{}) error
Close() error
}
在服务器端,我们随后更改了两个内部函数签名以接受接口ServerCodec
而不是我们现有的