模式简介
装饰器模式允许你动态地为对象添加行为或职责,而不需要修改对象的原始类。通过引入装饰者类,可以在运行时灵活地组合不同的功能,而不需要创建大量的子类。装饰者模式的核心思想是将对象包装在一个或多个装饰者中,每个装饰者都可以在调用被装饰对象的方法之前或之后添加额外的行为。
假设你正在开发一个 Web 服务,其中有一个核心功能是处理用户请求。现在,你需要在不修改核心功能代码的情况下,为请求处理添加以下功能:
日志记录:记录每个请求的详细信息。
性能监控:记录每个请求的处理时间。
请求缓存:对已处理过的请求缓存处理,再次调用时直接返回缓存结果。
使用装饰器模式,你可以轻松地实现这些功能,而无需修改原始请求处理逻辑。
package main
import (
"fmt"
"time"
)
type RequestHandler interface {
HandleRequest(url string) string
}
// 核心处理结构体,负责完成实际业务逻辑
type CoreRequestHandler struct{
}
// 模拟处理网络请求
func (c *CoreRequestHandler) HandleRequest(url string) string {
// 模拟请求处理100毫秒
time.Sleep(100 * time.Millisecond)
return fmt.Sprintf("Response from %s", url)
}
// 日志装饰器 LoggingDecorator:在请求前后添加日志记录
type LoggingDecorator struct {
handler RequestHandler
}
func (l *LoggingDecorator) HandleRequest(url string) string {
fmt.Printf("Logging: Handling request for %s\n", url)
//
response := l.handler.
Go语言装饰器模式的应用与特点

最低0.47元/天 解锁文章
751

被折叠的 条评论
为什么被折叠?



