1. 程式人生 > >對go語言中的介面的比喻

對go語言中的介面的比喻

go語言中的介面很有意思,是一種高內聚鬆耦合的東西,下面我用來打一個比喻:

介面呢相當於一個領導,他提出了一些列方法,至於這些方法怎麼實現,領導不管

type 領導 interface {

夜襲打法 ()    //方法一

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

地雷打法()     //方法三

狙擊騷擾法()   //方法四

}

你看領導提出了四種消滅敵人的法子,這些法子具體怎麼打,領導不關心,全部由下面的兵兵去實現。

type 兵兵 stuct{

...

...

}

 

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

具體實現。。。。。

}

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

具體實現。。。。。

}

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

具體實現。。。。。

}

func (a 兵兵) 狙擊騷擾法() {

具體實現。。。。。

}

很好,凡是領導提出的消滅敵人的法子,兵兵們都有一套實現的方法,領導很滿意,因為手底下的兵兵們完全實現了領導的作戰思想。

那麼來一場實戰吧。

var a 領導

var b=兵兵{...}

b.挖地道打法() //兵兵在前線完成了領導提出來的挖地道打法

a=b    //領導是無法直接展開例項的,但是領導可以觀看兵兵呀,我們可以理解為領導直接指揮,因為大領導可以什麼都不做,所以任何空介面代表實現了任何方法

a.夜襲打法() //在領導的直接指揮下,兵兵當即演習了一次夜襲打法。

 

func (敵人)打仗(a 領導){ //這裡傳入的領導,實際上當然在例項中會傳入兵兵了,因為的介面,最後會是兵兵去送進去實現

.....

}