Posted on 2008-10-27 20:25
非魚 閱讀(2537)
評論(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