Go言語 チェーンオブレスポンシビリティ パターンの実装と呼び出し
Go言語で責任鎖(Chain of Responsibility)パターンを実装する手順は次の通りです:
- 最初に、責任連鎖の中の処理ノードを表すインターフェースを定義します。例えば、
type Handler interface {
SetNext(handler Handler)
HandleRequest(request Request) bool
}
- 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
}
- 具体の処理ノードをつないで、責任鎖オブジェクトを作成してください。例えば、
handler1 := &ConcreteHandler1{}
handler2 := &ConcreteHandler2{}
handler3 := &ConcreteHandler3{}
handler1.SetNext(handler2)
handler2.SetNext(handler3)
- 最後に、責任鎖オブジェクトのHandleRequestメソッドを呼び出して、リクエストを責任鎖内の最初の処理ノードに渡し、全体の処理フローをトリガーします。例:
request := Request{...}
handler1.HandleRequest(request)
上記の手順を実行することで、Go言語で責任連鎖パターンを使用してリクエスト処理を行うことができます。