Java類庫中有為滿足不同需求而設計的不同的器,實際上就是不同的介面。最近學習了比較器、迭代器和文件過濾器這三個介面,我根據自己的理解做了一個不成熟的總結,假如有很多不准確甚至是錯誤的地方,希望大家多多賜教! 這三個介面在設計的時候,並不是只是聲明一個介面以及它裡面的方法,也在需要特定類“配合”這些 ...
Java類庫中有為滿足不同需求而設計的不同的器,實際上就是不同的介面。最近學習了比較器、迭代器和文件過濾器這三個介面,我根據自己的理解做了一個不成熟的總結,假如有很多不准確甚至是錯誤的地方,希望大家多多賜教!
這三個介面在設計的時候,並不是只是聲明一個介面以及它裡面的方法,也在需要特定類“配合”這些介面來完成某些功能,特定類指的就是需要使用這些介面完成某項功能的類(比如Tree結構集合要按照一定規則排序而使用比較器排序,這裡Tree結構集就是我說的特定類,比較器就是它需要用的介面)。
什麼意思呢?打個不恰當的比方,這三種介面就相當於基站,而特定的類就相當於各種手機,我手機想要通過基站來通訊,不能只讓基站發送信號,你手機卻沒有接受信號的功能,所以手機需要配合基站。這三個介面和這些特定類的關係就類似基站和手機。
這裡通過File類和文件過濾器來說,File類里有list(FilenameFilter filter)方法來接受文件過濾器的對象,File類的list(FilenameFilter filter)和文件過濾器介面中的accept(File file,String name)配合共同完成文件的過濾。同理,另外兩種介面和其特定類也是類似的(不一定是如File類和文件過濾器一樣是通過構造方法獲取介面對象的方式來完成,這裡我就不詳細說明瞭)。對於文件過濾,或許每次需要過濾的文件不一樣,所以才不在File類里定義一個方法實現,不然每次有新需求都得重寫。而通過過濾器介面和File類的配合,每次只需要按照不同需求實現過濾器介面的方法就可以了。這裡並沒有詳細說這三個介面配合相應的類如何實現功能的。我只是想表達為什麼要設計介面和它可能的設計思想是什麼(可能我理解的也不對)。