李超

cc编程笔记本。

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
三年前,我学习C++,了解了范型编程,当时仅仅是知道怎么回事而已,但是我知道这个东西是为了代码复用而发明的,有了他,你可以少写很多代码,因为在编译的时候他自己会生成相应类型的函数,可以不用去写针对每种数据类型的相同功能的函数,但是由于当时年幼加上范型的难以掌握,我没能深入研究下去。

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

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

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

理性思考,范型和多态,一个是繁琐的代码带来高效的运行,一个优雅的代码带来繁琐的实现,我们确实应该理性选择面向对象或者是范型,理性看待模板元编程和设计模式。
posted on 2008-02-11 15:18  coderlee  阅读(371)  评论(0编辑  收藏  举报