寒江雪 Go實現觀察者模式

2021-08-17 03:41:11 字數 994 閱讀 2603

觀察者模式使得一種型別的例項可以傳送事件給其他型別,前提是接收事件的例項要根傳送者訂閱這個事件。

先來定義要使用到的介面

package observer

type(

event struct

observer inte***ce

notifier inte***ce

)

然後寫幾個簡單的型別實現這些介面

package observer

import

"fmt"

type eventcenter struct

func (this *eventcenter)notify(event event)

}func (this *eventcenter)register(o observer)

func (this *eventcenter)degister(o observer)

}}func neweventcenter()*eventcenter

res.observers=make(observer,0)

return &res

}type eventreciver struct

func (this *eventreciver)onnotify(event event)

最後是main檔案

package main

func main()

r_2 := observer.eventreciver{}

eventcenter.register(&r_1)

eventcenter.register(&r_2)

eventcenter.notify(observer.event)

eventcenter.degister(&r_1)

eventcenter.notify(observer.event)

}

觀察者模式實現

公升級觀察者 var observer function 定義介面 return else trigger方法用於觸發觀察者物件中的事件 type 要觸發的事件名稱 trigger用於觸發觀察者物件中的事件 trigger function type,val off方法用於移除某個事件 off fu...

如何使用go來實現觀察者模式

總結最近在學習go語言,學習一門語言最好的方法,就是實踐啦,於是我心血來潮,有乙個大膽的想法,就是如何使用go這種非物件導向程式設計的語言來實現觀察者模式呢?於是便有了這片部落格,這裡不再詳細介紹觀察者模式,如果需要了解觀察者模式的話,請參考我之前的部落格觀察者模式。首先,我們知道,觀察者模式是基於...

GO設計模式2 觀察者模式

在物件之間定義了一對多的依賴,這樣一來,當乙個物件改變狀態,依賴它的物件會收到通知並自動更新。其實就是發布訂閱模式,發布者發布資訊,訂閱者獲取資訊,訂閱了就能收到資訊,沒訂閱就收不到資訊。type observer inte cetype oneobserver struct func this o...