Junior — Middle
Оё метавонед таҷрибаи худро дар истифодаи намунаи Chain of Responsibility дар лоиҳаҳои воқеӣ тавсиф кунед?
sobes.tech AI
Ҷавоб аз AI
Дар яке аз лоиҳахои ман дар Go, ман намунаи Chain of Responsibility-ро барои коркарди дархостҳои HTTP бо сатҳҳои гуногуни тасдиқ ва иҷозат истифода кардам. Ҳар як коркардкунанда дар занҷир шарти муайянро санҷида — масалан, эътибори токен, ҳуқуқҳои дастрасӣ, формати маълумот — ва ё дархостро коркард мекард ё ба ояндаи занҷир мегузошт. Ин имкон дод, ки санҷишҳои навро бо чандирӣ илова кардан бидуни тағир додани коди мавҷуда ва хонданро беҳтар кард.
Маслиҳати соддакардашуда:
package main
import "fmt"
type Handler interface {
SetNext(handler Handler)
Handle(request string)
}
type BaseHandler struct {
next Handler
}
func (b *BaseHandler) SetNext(handler Handler) {
b.next = handler
}
func (b *BaseHandler) Handle(request string) {
if b.next != nil {
b.next.Handle(request)
}
}
type AuthHandler struct { BaseHandler }
func (h *AuthHandler) Handle(request string) {
if request == "valid_token" {
fmt.Println("Auth passed")
h.BaseHandler.Handle(request)
} else {
fmt.Println("Auth failed")
}
}
func main() {
auth := &AuthHandler{}
auth.SetNext(&BaseHandler{})
auth.Handle("valid_token") // Auth passed
auth.Handle("invalid") // Auth failed
}
Интихоб кӯмак мекунад, ки масъулиятҳоро ҷудо кунад ва нигоҳдории онро осон гардонад.