觀察者模式使得一種型別的例項可以傳送事件給其他型別,前提是接收事件的例項要根傳送者訂閱這個事件。
先來定義要使用到的介面
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...