打印

另一种功能复用技术(并非严格的面向对象技术)是参数化类型(parameterized type)

[复制链接]
553|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
keer_zu|  楼主 | 2015-8-17 16:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
另一种功能复用技术(并非严格的面向对象技术)是参数化类型(parameterized type),也就
是类属( g e n e r i c ) ( A d a、E i ff e l )或模板( t e m p l a t e s ) ( C + + )。它允许你在定义一个类型时并不指定该
类型所用到的其他所有类型。未经指定的类型在使用时以参数形式提供。例如,一个列表类
能够以它所包含元素的类型来进行参数化。如果你想声明一个I n t e g e r列表,只需将I n t e g e r类
型作为列表参数化类型的参数值;声明一个S t r i n g列表,只需提供S t r i n g类型作为参数值。语
言的实现将会为各种元素类型创建相应的列表类模板的定制版本。

相关帖子

沙发
keer_zu|  楼主 | 2015-8-17 16:24 | 只看该作者
参数化类型给我们提供除了类继承和对象组合外的第三种方法来组合面向对象系统中的
行为。许多设计可以使用这三种技术中的任何一种来实现。实现一个以元素比较操作为可变
元的排序例程,可有如下方法:
1) 通过子类实现该操作( Template Method(5.10)的一个应用)。
2 ) 实现为传给排序例程的对象的职责( S t r a t e g y ( 5 . 9 ) )。
3) 作为C + +模板或A d a类属的参数,以指定元素比较操作的名称。
这些技术存在着极大的不同之处。对象组合技术允许你在运行时刻改变被组合的行为,
但是它存在间接性,比较低效。继承允许你提供操作的缺省实现,并通过子类重定义这些操
作。参数化类型允许你改变类所用到的类型。但是继承和参数化类型都不能在运行时刻改变。
哪一种方法最佳,取决于你设计和实现的约束条件。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1349

主题

12426

帖子

53

粉丝