利用运行时代码生成实现Duck typing技术

2008 年 7 月 09 日

Duck typing 技术能够应用在类似 C#这样的静态类型化语言中,但它通常需要实现一些冗长的反射代码。不过,鉴于这项技术的好处,一些人尝试各种方式以期找到一种更为简单的方法来实现这种技术。

Duck typing 背后的概念非常简单,就是所谓的迟绑定;如果对象具有某个函数希望调用的所有方法,就可以将这个对象传递给该函数。熟悉静态类型语言的人们可 能会说,“哦,这不就是接口吗?”。可以说是也可以说不是,在概念上它类似于接口,不过却不需要静态定义。倘若类不需要使用它的开发人员创建,相关难题也 就迎刃而解了。

一种可用的方案是创建适配器类。适配器实现接口,并将方法调用传递给真实的对象。遗憾的是,构建这些适配器类是冗长的。为了使代码更为简短与灵活,开发人员开始转为使用运行时代码生成的方式。在很多开源项目中可以看到采用这种方式的例子,包括:

这些可能在最终都只是一些权宜之计。Visual Basic 已经具有 duck typing 功能,只需开启 Option Strict Off 选项。在 VB 9 中曾经考虑动态实现接口,尽管最终没有实现,但在 VB 10 中我们或能看到这一特性。同时,C#正在考虑添加动态关键字,以获得和Option Strict Off 同样的效果。

查看英文原文: Duck Typing Using Runtime Code Generation

2008 年 7 月 09 日 22:09377
用户头像

发布了 254 篇内容, 共 37.5 次阅读, 收获喜欢 1 次。

关注

评论

发布
暂无评论
发现更多内容

week5. 总结心得

dj_cd

极客大学架构师训练营

架构第四周课程作业

dj_cd

极客大学架构师训练营

week5 作业

雪涛公子

架构师训练营 第五周 作业

极客

week5 总结

雪涛公子

架构师训练营第 5 周作业

Season

一致性哈希 一致性Hash算法

架构师训练营第五周学习总结

Bruce Xiong

Week05 学习心得 - 技术选型

极客大学架构师训练营

第五周总结

叶鹏

第五周总结

Linuxer

极客大学架构师训练营

一致性Hash算法

羽球

一致性hash

第五周作业

CP

第五周作业

路人

极客大学架构师训练营

面向对象学习

一叶知秋

架构师训练营 No.5 周作业

连增申

架构师训练营 - 作业 - 第五讲

吕浩

架构师训练营第 5 周学习总结

Season

缓存 反向代理 消息队列

第五周作业

倪惠华

架构师训练营第五周 - 总结

Larry

第四周架构课程总结心得

dj_cd

极客大学架构师训练营

第五周总结

倪惠华

第五周 架构师技术选型总结

netbanner

架构师训练营-第五章-课程总结

而立

极客大学架构师训练营

区块链重塑供应链

CECBC区块链专委会

架构师训练营 No.5 周总结

连增申

架构师训练营第五周作业

Geek_2dfa9a

第五周作业:一致性 hash 算法

Larry

一致性hash的Java代码实现

叶鹏

架构师 0 期 | 缓存--提升性能大杀器

刁架构

极客大学架构师训练营

架构师训练营Week5学习总结

小高

「架构师训练营」第 5 周总结

guoguo 👻

极客大学架构师训练营

利用运行时代码生成实现Duck typing技术-InfoQ