Golang – 常用设计Decoration Pattern之增强函数Enhanced Function
增强含糊和一般的Decoration Pattern有点类似,都是可以无需更改原有function的代码,可以灵活扩展额外的功能
代码范例:
package main
import (
"fmt"
"time"
)
// 定义一个类型为 counterFunction 的函数类型
type counterFunction func(int, int) int
// enhancedTimerFunction 接受一个 counterFunction 类型的函数作为参数,并返回一个增强版的函数
func enhancedTimerFunction(in counterFunction) counterFunction {
return func(x, y int) int {
now := time.Now() // 记录当前时间
result := in(x, y) // 调用传入的函数
// 打印函数执行时间(毫秒)
fmt.Printf("Used: %d MS\n", time.Since(now).Milliseconds())
return result // 返回结果
}
}
// oriFunction 是一个示例函数,模拟计算过程
func oriFunction(x, y int) int {
time.Sleep(500 * time.Millisecond) // 模拟计算延迟
return x + y // 返回两个数的和
}
func main() {
// 使用 oriFunction 生成增强版的函数
enhancedFunction := enhancedTimerFunction(oriFunction)
// 调用增强版的函数并获取结果
finalResult := enhancedFunction(1, 2)
// 打印最终结果
fmt.Println("final result :", finalResult)
}
输出结果:
Used: 501 MS
final result : 3
Facebook评论