Go语言没有动态代理? 本来想用AOP写框架,怎么实现才好

631768417 · · 19627 次点击
AOP不是基于java的interface么,go也有interface机制啊,go的interface机制比java强大。
#1
更多评论
动态代理没那么简单,首先调用者只能看到接口,甚至本地计算机没有接口的实现.动态代理就是根据用户需要凭空生成一个对象,这个对象的实现是自动生成的,他的所有参数是根据接口匹配的,这个自动生成的对象会调用你指定配置的几个函数,吧调用者传递的参数传递给任何本地或者远程的实现.结果送来以后再给自动对象返回给调用者. 这种机制的好处是可以让调用者完全与实现隔离,调用者和实现者都不需要关注如何调用的.而具体如何调用可以在最后配置动态代理来决定. 比如同样的一个程序,加一个好的动态代理框架,你可以不修改一行代码,让这个个程序可以只在本地高速运行,可以在两台机器上分别运行客户端服务器端,甚至不修改代码就可以实现实现端的负载均衡,给客户端或者服务器端加缓存. 调用者就是调一个接口,实现者只实现了业务逻辑,而实际运行,可能是通过动态代理,转换成web service从远程调用的业务逻辑. 这里面最核心的技术就是动态生成可执行的java字节码,但是golang是机器码型语言又要跨平台的特性,难以解决不同硬件结构的问题.官方应该是不会去实现动态机器码生成的. 因此,我想golang是不会有动态代理功能
#2
可以参考:https://github.com/gogap/aop
#3