GoLangのチェーンオブレスポンシビリティパターンの実装方法は何ですか?

Go言語では、インターフェースと構造体を使って責任鎖パターンを実装することができます。

最初、リクエストを処理する方法を定義するインタフェースを作成する必要があります。

type Handler interface {
    SetNext(handler Handler)
    HandleRequest(request string)
}

その後、私たちは具体的なハンドラー構造体を実装し、その構造体がHandlerインターフェースを実装することができます。

type ConcreteHandler struct {
    nextHandler Handler
}

func (ch *ConcreteHandler) SetNext(handler Handler) {
    ch.nextHandler = handler
}

func (ch *ConcreteHandler) HandleRequest(request string) {
    // 处理请求的逻辑
    if request == "some condition" {
        // 处理请求的代码
    } else if ch.nextHandler != nil {
        // 将请求传递给下一个处理器
        ch.nextHandler.HandleRequest(request)
    }
}

最後に、私たちはリクエストを最初の処理器に渡す処理器チェーンを作成できます。

func main() {
    handler1 := &ConcreteHandler{}
    handler2 := &ConcreteHandler{}
    handler3 := &ConcreteHandler{}

    handler1.SetNext(handler2)
    handler2.SetNext(handler3)

    handler1.HandleRequest("some request")
}

したがって、handler1のHandleRequestメソッドを呼び出すと、特定の条件が満たされる場合はリクエストを処理し、そうでない場合はリクエストを次のハンドラーに渡し、リクエストを処理するハンドラーがあるまで繰り返されます。

bannerAds