對go語言中的介面的比喻
阿新 • • 發佈:2018-12-30
go語言中的介面很有意思,是一種高內聚鬆耦合的東西,下面我用來打一個比喻:
介面呢相當於一個領導,他提出了一些列方法,至於這些方法怎麼實現,領導不管
type 領導 interface {
夜襲打法 () //方法一
挖地道打法() //方法二
地雷打法() //方法三
狙擊騷擾法() //方法四
}
你看領導提出了四種消滅敵人的法子,這些法子具體怎麼打,領導不關心,全部由下面的兵兵去實現。
type 兵兵 stuct{
...
...
}
func (a 兵兵) 夜襲打法() {
具體實現。。。。。
}
func (a 兵兵) 挖地道打法() {
具體實現。。。。。
}
func (a 兵兵) 地雷打法() {
具體實現。。。。。
}
func (a 兵兵) 狙擊騷擾法() {
具體實現。。。。。
}
很好,凡是領導提出的消滅敵人的法子,兵兵們都有一套實現的方法,領導很滿意,因為手底下的兵兵們完全實現了領導的作戰思想。
那麼來一場實戰吧。
var a 領導
var b=兵兵{...}
b.挖地道打法() //兵兵在前線完成了領導提出來的挖地道打法
a=b //領導是無法直接展開例項的,但是領導可以觀看兵兵呀,我們可以理解為領導直接指揮,因為大領導可以什麼都不做,所以任何空介面代表實現了任何方法
a.夜襲打法() //在領導的直接指揮下,兵兵當即演習了一次夜襲打法。
func (敵人)打仗(a 領導){ //這裡傳入的領導,實際上當然在例項中會傳入兵兵了,因為的介面,最後會是兵兵去送進去實現
.....
}