Welcome 微信登录

首页 / 软件开发 / JAVA / 冒号课堂§3.1:泛型范式

冒号课堂§3.1:泛型范式2011-06-25 BlogJava xyz98第三课 常用范式(1)

课前导读

这一课介绍了四个常用的编程范式:泛型式、元编程、切面式和事件驱动式。

本课共分四节——

1.泛型范式

2.超级范式

3.切面范式

4.事件驱动

3.1泛型范式——抽象你的算法

以类行杂,以一行万 ——《荀子•王制篇》

关键词:编程范式,泛型编程,STL,算法

摘要:泛型式编程简谈

?提问

泛型编程有哪些优点?

STL有哪些要素?各自有什么作用?

泛型编程的泛化对象是什么?

泛型编程的核心思想是什么?

:讲解

冒号重新开讲:“你们会不会经常遇到这样的情景:一遍又一遍地写着相似的代码,有心将其归并,却因种种原因无法践行。”

逗号心有戚戚焉道:“是啊,有时明明两个函数的实现几乎一模一样的,就因为某些参数不匹配,无法合而为一。”

“有一种编程范式可以解决这个问题,它打破了不同数据结构之间的壁垒,让你的代码不再臃肿,这——就是泛型编程。”冒号的语调和说辞不免令人联想到电视上的减肥广告,“Generic Programming,简称GP,其基本思想是:将算法与其作用的数据结构分离,并将后者尽可能泛化,最大限度地实现算法重用。这种泛化是基于模板(template)的参数多态(parametric polymorphism),相比OOP基于继承的子类型多态(subtype polymorphism),不仅普适性更强,而且效率也更高。这不能不说是一种异数——我们知道,普适性往往是以效率为代价的。如果一定要找出代价的话,那就是其用法稍微复杂一些,可读性稍微差一些。GP最著名的代表是C++中的STL(Standard Template Library),其后亦为Java,C#等所吸纳。此外,一些函数式语言如Ocaml、Standard ML、Generic Haskell等也支持GP。”