五、面向接口編程
在我看來,面向對象編程(OOP)最有魅力對開發技術改進最有影響力的就是接口,接口定義一套規范或標準,如何實現取決于他的實現類,這給開發人員提供了足夠的靈活性,大大增強了系統的可塑性,為開發人員提供了更加先進有效的擴展性能。JDBC是接口應用最典型的示例之一,Java JDK定義了一組接口,如Connection、Statement、ResultSet等,但并不作出具體的實現,事實上,sun公司也沒有能力去實現,因為不同的DBMS有不同的數據組織格式,如何連接數據庫、如何執行SQL語句、如何處理返回的結果集,sun公司無從知曉,所以,通過接口實現數據訪問的工作巧妙地轉移到了數據庫提供商,不得不說這招實在高明。
在我們的系統中,合理利用接口的特征能有效提高系統的擴展性和靈活性,尤其Spring的出現,通過對IOC的強化,更加突出了接口的作用,學習者更容易從代碼級別理解接口的意義。Spring無污染非侵入式的設計,降低了組件替換和功能擴展的成本,為開發人員打開了程序開發的另一扇窗。
并不是系統中的所有組件都需要提供接口,定義接口時應該先明確功能擴展點,對于那些比較固定有一定格式的代碼則無需定義接口,通常情況下,為業務類定義一個接口是不錯的選擇,業務變更是家常便飯,為業務類提供接口有利于我們主動適應業務的變化。
Eclipse將“重構”做得比較強大了,如果你的業務類還沒有接口,通過“Refactor->Extract Interface”菜單可以自動為業務類生成相應的業務接口。