go的鸭子模型
duck typing, 鸭子模型,像鸭子一样游泳,像鸭子一样叫,那它就可以看作鸭子。
Go 语言没有显式的 implements 关键字。只要一个类型实现了接口要求的所有方法,它就自动满足这个接口。
一、接口示例
type Writer interface {
Write(p []byte) (n int, err error)
}
任何类型只要实现了 Write 方法,就可以被当作 Writer 使用。
二、优势
- 降低类型之间的耦合;
- 接口更小、更灵活;
- 便于测试和替换实现;
- 适合面向能力建模。
三、设计建议
- 接口尽量小;
- 接口由使用方定义;
- 不要为了抽象而抽象;
- 优先描述行为,而不是描述对象。