现在的位置: 首页 > 综合 > 正文

理性对待范型和多态

2012年09月10日 ⁄ 综合 ⁄ 共 685字 ⁄ 字号 评论关闭
三年前,我学习C++,了解了范型编程,当时仅仅是知道怎么回事而已,但是我知道这个东西是为了代码复用而发明的,有了他,你可以少写很多代码,因为在编译的时候他自己会生成相应类型的函数,可以不用去写针对每种数据类型的相同功能的函数,但是由于当时年幼加上范型的难以掌握,我没能深入研究下去。

两年前,我学习C#,明白了多态是怎么回事,并且刨根问底的看了多态的实现,我明白这个东西也是为了代码复用而发明的,有了他,你同样可以少写很多代码,因为在运行的时候会自动判别类型并调用相应的方法,依靠多态优雅简洁的实现,你不用关心内部如何繁琐就可以编写很多大型项目,我因此依靠优雅的多态混上了一份糊口的工作,至今我仍然在写着优雅的多态,但我心底总是有一份隐忧,我们是否应该把任务推卸给运行时吗?

范型领域目前出现了模板元编程的概念,OO领域也出现了依靠多态的各种设计模式,一个是代码级解决方案,一个是运行时解决方案,两者都大放异彩,我却徘徊了。。

其实c++同样支持多态,c#同样支持范型,在C#面向对象,设计模式甚嚣尘上的今天,微软的工程师们却在.Net Framework2.0的Container中大量使用了范型技术(IList<>),而淡化了多态技术(ArrayList),并且鼓励大家使用IList<>系列的范型容器,其实原因也不难分析,当数组内有千万元素的时候,当调用每个元素的一个方法的时候,千万次的多态所带来的开销是不能忽视的。

理性思考,范型和多态,一个是繁琐的代码带来高效的运行,一个优雅的代码带来繁琐的实现,我们确实应该理性选择面向对象或者是范型,理性看待模板元编程和设计模式。

抱歉!评论已关闭.