日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Just for fun——go实现一下观察者模式

發布時間:2024/4/13 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Just for fun——go实现一下观察者模式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

代碼

package mainimport ("fmt" )type Subject interface {RegisterObserver(o Observer)RemoveObserver(o Observer)NotifyAllObservers() }type Observer interface {// 溫度,濕度,氣壓Update(temp float32, humidity float32, pressure float32) }type WeatherData struct {Temperature float32Humidity float32Pressure float32Observers map[Observer]bool }func NewWeathData() *WeatherData {return &WeatherData{Observers: make(map[Observer]bool),} }func (wd *WeatherData) RegisterObserver(o Observer) {wd.Observers[o] = true }func (wd *WeatherData) RemoveObserver(o Observer) {if _, ok := wd.Observers[o]; ok {delete(wd.Observers, o)} }func (wd *WeatherData) NotifyAllObservers() {for o, _ := range wd.Observers {o.Update(wd.Temperature, wd.Humidity, wd.Pressure)} }func (wd *WeatherData) SetMeasurements(temp float32, humidity float32, pressure float32) {wd.Temperature = tempwd.Humidity = humiditywd.Pressure = pressurewd.NotifyAllObservers() }type CurrentConditionsDisplay struct {Temperature float32Humidity float32weathData Subject }func NewCurrentConditionsDisplay(weathData Subject) *CurrentConditionsDisplay {ccd := &CurrentConditionsDisplay{weathData: weathData,}weathData.RegisterObserver(ccd)return ccd }func (ccd *CurrentConditionsDisplay) Update(temp float32, humidity float32, pressure float32) {ccd.Temperature = tempccd.Humidity = humidity// pressure 沒用到ccd.Display() }func (ccd *CurrentConditionsDisplay) Display() {fmt.Println("Current conditions: " + fmt.Sprintf("%v", ccd.Temperature) + "F degrees and " + fmt.Sprintf("%v", ccd.Humidity) + "% humidity") }func main() {weathData := NewWeathData()_ = NewCurrentConditionsDisplay(weathData)weathData.SetMeasurements(80, 65, 30.4)weathData.SetMeasurements(82, 70, 29.2)weathData.SetMeasurements(78, 90, 29.2) }

測試

輸出

Current conditions: 80F degrees and 65% humidity Current conditions: 82F degrees and 70% humidity Current conditions: 78F degrees and 90% humidity 超強干貨來襲 云風專訪:近40年碼齡,通宵達旦的技術人生

總結

以上是生活随笔為你收集整理的Just for fun——go实现一下观察者模式的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。