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