碧海长天

好看的皮囊千篇一律,有趣的灵魂万里挑一。

golang学习-----侵入式接口与非侵入式接口

2019-3-19

重要的概念先说:Go语言的接口并不是其他语言(C++、Java、Php等)中所提到的接口概念。
go语言等接口属于非侵入式接口。

侵入式接口:实现类需要明确声明自己实现了某个接口。
例如:
interface IFoo{
    void Bar();
}

class Foo implements IFoo{    //java
    //...
}

class Foo : public IFoo {   //C++
  // ...
}

IFoo* foo = new foo;


非侵入式接口:一个类只需要实现了接口要求的所有函数,我们就说这个类实现了该接口
例如:
type IFoo interface {
	Bar()
}

type Foo struct {
}

func(f *Foo) Bar(){
}

go语言中非侵入式接口的影响:
    1.go语言标准库不再需要绘制类库的继承树。
    2.实现类的时候,只需要关心自己应该提供哪些方法,不用再纠结接口需要拆得多细才合理。
    3.接口由使用方按自身需求来定义,使用方无需关心是否有其他模块定义过类似的接口。

标签: golang

发表评论: