Go言語 チェーンオブレスポンシビリティ パターンの実装と呼び出し

Go言語で責任鎖(Chain of Responsibility)パターンを実装する手順は次の通りです:

  1. 最初に、責任連鎖の中の処理ノードを表すインターフェースを定義します。例えば、
type Handler interface {
    SetNext(handler Handler)
    HandleRequest(request Request) bool
}
  1. Handler インターフェースを実装した複数の具体的な処理ノードを作成し、それぞれのノードはリクエストを処理するために HandleRequest メソッドを実装しており、SetNext メソッドを使用して次の処理ノードを設定しています。例えば:
type ConcreteHandler1 struct {
    next Handler
}

func (c *ConcreteHandler1) SetNext(handler Handler) {
    c.next = handler
}

func (c *ConcreteHandler1) HandleRequest(request Request) bool {
    // 处理请求的逻辑

    if c.next != nil {
        return c.next.HandleRequest(request)
    }

    return true
}
  1. 具体の処理ノードをつないで、責任鎖オブジェクトを作成してください。例えば、
handler1 := &ConcreteHandler1{}
handler2 := &ConcreteHandler2{}
handler3 := &ConcreteHandler3{}

handler1.SetNext(handler2)
handler2.SetNext(handler3)
  1. 最後に、責任鎖オブジェクトのHandleRequestメソッドを呼び出して、リクエストを責任鎖内の最初の処理ノードに渡し、全体の処理フローをトリガーします。例:
request := Request{...}
handler1.HandleRequest(request)

上記の手順を実行することで、Go言語で責任連鎖パターンを使用してリクエスト処理を行うことができます。

bannerAds