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

Loading

Facebook评论