Go语言设计模式之装饰器模式Decorator

模式简介

装饰器模式允许你动态地为对象添加行为或职责,而不需要修改对象的原始类。通过引入装饰者类,可以在运行时灵活地组合不同的功能,而不需要创建大量的子类。装饰者模式的核心思想是将对象包装在一个或多个装饰者中,每个装饰者都可以在调用被装饰对象的方法之前或之后添加额外的行为。

假设你正在开发一个 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.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值