golang学习-----侵入式接口与非侵入式接口
2019-3-19
重要的概念先说:Go语言的接口并不是其他语言(C 、Java、Php等)中所提到的接口概念。
go语言等接口属于非侵入式接口。
侵入式接口:实现类需要明确声明自己实现了某个接口。
例如:
代码语言:javascript复制interface IFoo{
void Bar();
}
class Foo implements IFoo{ //java
//...
}
class Foo : public IFoo { //C
// ...
}
IFoo* foo = new foo;
非侵入式接口:一个类只需要实现了接口要求的所有函数,我们就说这个类实现了该接口
例如:
代码语言:javascript复制type IFoo interface {
Bar()
}
type Foo struct {
}
func(f *Foo) Bar(){
}
go语言中非侵入式接口的影响:
1.go语言标准库不再需要绘制类库的继承树。
2.实现类的时候,只需要关心自己应该提供哪些方法,不用再纠结接口需要拆得多细才合理。
3.接口由使用方按自身需求来定义,使用方无需关心是否有其他模块定义过类似的接口。