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

2021-10-21 16:07:42 浏览数 (1)

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.接口由使用方按自身需求来定义,使用方无需关心是否有其他模块定义过类似的接口。

0 人点赞