Posted on 2008-10-27 20:25
非鱼 阅读(2526)
评论(0) 编辑 收藏 所属分类:
面向对象设计 、
Java技术
4. 使用集合(Collection)“类”而不是接口来定义变量
集合类,或者说“容器”类,是Java平台SDK中最常用的类,如果谁没有用过集合类,他都不好意思跟人家说会Java语言。在这方面,Java相对于其他语言更加易用一些,提供了大量的常用集合类的实现。
我印象中最早的通俗易懂的Java指导书,都会用Vector来举例来说明集合类的用法。一方面 是因为这个类最易学,另一方面因为许多书籍编写于Java 1.0、1.1时代,那时候也还没有太多的集合类实现呢。
随着集合类的逐渐丰富,程序员们可选择的余地越来越大。甚至随着新版本JDK的发布,大家发现原来自己实现的集合类在新的SDK中有标准实现了。
于是勤劳的程序员们(程序员们都应该是勤劳的)开始行动起来,修改、优化旧的代码,采用新的或更加有效的实现方式,甚至有时候需要修改方法接口(此处指Method Signature)。
对于本地变量、实例变量和静态变量还好说,当你使用ArrayList替换Vector以求更高效率的时候,基本上只要修改变量定义的类型就可以了。但如果使用了集合类来定义方法的参数和返回值,修改代码的影响范围就不再局限于一个类的内部了。虽然现在的IDE都具备基本的Refactor功能,可以进行Change Method Signature的重构,但重构完了你要测试呀。不能完全依赖IDE及其他重构工具带来的高效,涉及到Method Signature的修改基本都是开放的,需要慎重评估;这里最大的问题不是能否改正确,而是增加了变动的范围,使得在代码引入缺陷的几率大大增加了。
这时候就凸显了使用集合接口定义变量的优势。
collection, interface, concrete class