对go语言中的接口的比喻

go语言中的接口很有意思,是一种高内聚松耦合的东西,下面我用来打一个比喻:

接口呢相当于一个领导,他提出了一些列方法,至于这些方法怎么实现,领导不管

type 领导 interface {

夜袭打法 ()    //方法一

挖地道打法()     //方法二

地雷打法()     //方法三

狙击骚扰法()   //方法四

}

你看领导提出了四种消灭敌人的法子,这些法子具体怎么打,领导不关心,全部由下面的兵兵去实现。

type 兵兵 stuct{

...

...

}

func (a 兵兵) 夜袭打法() {

具体实现。。。。。

}

func (a 兵兵) 挖地道打法() {

具体实现。。。。。

}

func (a 兵兵) 地雷打法() {

具体实现。。。。。

}

func (a 兵兵) 狙击骚扰法() {

具体实现。。。。。

}

很好,凡是领导提出的消灭敌人的法子,兵兵们都有一套实现的方法,领导很满意,因为手底下的兵兵们完全实现了领导的作战思想。

那么来一场实战吧。

var a 领导

var b=兵兵{...}

b.挖地道打法() //兵兵在前线完成了领导提出来的挖地道打法

a=b    //领导是无法直接展开实例的,但是领导可以观看兵兵呀,我们可以理解为领导直接指挥,因为大领导可以什么都不做,所以任何空接口代表实现了任何方法

a.夜袭打法() //在领导的直接指挥下,兵兵当即演习了一次夜袭打法。

func (敌人)打仗(a 领导){ //这里传入的领导,实际上当然在实例中会传入兵兵了,因为的接口,最后会是兵兵去送进去实现

.....

}

猜你喜欢

转载自blog.csdn.net/renyx/article/details/85385100