高級寫法golang
type Manager interface { GetChain(chainID string) (ChainSupport, bool) SystemChannelID() string NewChannelConfig(envConfigUpdate *cb.Envelope) (configtxapi.Manager, error) } type ConfigUpdateProcessor interface { Process(envConfigUpdate *cb.Envelope) (*cb.Envelope, error) } type broadcastSupport struct { multichain.Manager broadcast.ConfigUpdateProcessor }
//上面把interface做爲struct的一個匿名成員,就能夠把這個struct當作此interface的一個實現,而不須要管struct是否已經實現interface定義的全部函數,實現了強解耦。 api
//通常寫法是要struct實現了interface的全部方法,這個struct纔算這個interface的實現,才能被這個interface接收。以下:函數
type broadcastSupport struct { } func Process(envConfigUpdate *cb.Envelope) (*cb.Envelope, error) { } b:=broadcastSupport{} var c ConfigUpdateProcessor=&b