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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

[go]---从java到go(02)---一个简单的handler模式的实现

發布時間:2024/7/23 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [go]---从java到go(02)---一个简单的handler模式的实现 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

類似于責任鏈模式吧,不同類實現相同的入參,執行不同的操作,一個執行完再確定要不要執行下一個。

用go實現:

1.定義一個接口
后面所有的handler都要實現這個接口的handler方法

type IHandler interface {/**true 表示通過 false 表示后面就不用再跑了*/Handler(requestSeatContext *model.RequestSeatContext) bool }

2.定義接口的入參,
為了測試,只寫一個參數,參數只有一個屬性,代表是否執行下一個handler
實際生成中,各個handler就是靠這個傳遞信息的

type RequestSeatContext struct {LastHandlerOK bool }

3.定義接口實現,
我們定義3個實現對象
a.解析參數的handler
b.執行abtest的handler
c.輸出log日志的handler

type RequestHandler struct {name string } func (handler *RequestHandler) Handler(requestSeatContext *model.RequestSeatContext) bool {if !requestSeatContext.LastHandlerOK {return false}fmt.Println("RequestHandler 執行")return true } type AbTestHandler struct {name string } func (handler *AbTestHandler) Handler(requestSeatContext *model.RequestSeatContext) bool {if !requestSeatContext.LastHandlerOK {return false}fmt.Println("AbTestHandler 執行")return true } type LogHandler struct {name string } func (handler *LogHandler) Handler(requestSeatContext *model.RequestSeatContext) bool {if !requestSeatContext.LastHandlerOK {return false}fmt.Println("LogHandler 執行")return true }

4.確定handler執行順序,定義各個handler組成的數組

var (requestHandlers []IHandler ) requestHandlers = []IHandler{&myhandler.RequestHandler{}, //1. 解析參數&AbTestHandler{}, //2. abtest&LogHandler{}, //3. 日志處理}

5.初始化handler入參

requestSeatContext := &model.RequestSeatContext{LastHandlerOK:true,}

6.執行handler

//執行for _, handler := range requestHandlers {requestSeatContext.LastHandlerOK = handler.Handler(requestSeatContext)}

執行結果

RequestHandler 執行 AbTestHandler 執行 LogHandler 執行

如果把中間的AbTestHandler的handler方法的返回值改為false
執行結果就變成:

RequestHandler 執行 AbTestHandler 執行

總結

以上是生活随笔為你收集整理的[go]---从java到go(02)---一个简单的handler模式的实现的全部內容,希望文章能夠幫你解決所遇到的問題。

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