DPIGGo 动态代理库
DPIG 是一个实验性质的 Go 语言动态代理库,它不依赖代码生成技术,可以对接口的实例进行动态增强,使用方法也很简单。
var u UserStore = user.New()
// 此处进行增强
dpig.Component(&u)
var postCall = func(in, out []reflect.Value) {
log.Println("Get User:", in[0].Interface(),out[0].Interface{})
}
// 修改方法运行行为
dpig.Change(dpig.MethodSelector{Object:"UserStore",Method:"GetUser"}, dpig.Extend{Post: []dpig.PostCall{postCall}})
u.GetUser(uid) // 此时会执行 postCall 函数
它支持对方法进行三种增强:前置、后置、环绕。
评论