欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

迭代器、比较器、文件过滤器

程序员文章站 2022-06-30 19:00:43
Java类库中有为满足不同需求而设计的不同的器,实际上就是不同的接口。最近学习了比较器、迭代器和文件过滤器这三个接口,我根据自己的理解做了一个不成熟的总结,假如有很多不准确甚至是错误的地方,希望大家多多赐教! 这三个接口在设计的时候,并不是只是声明一个接口以及它里面的方法,也在需要特定类“配合”这些 ......

Java类库中有为满足不同需求而设计的不同的器,实际上就是不同的接口。最近学习了比较器、迭代器和文件过滤器这三个接口,我根据自己的理解做了一个不成熟的总结,假如有很多不准确甚至是错误的地方,希望大家多多赐教!

    这三个接口在设计的时候,并不是只是声明一个接口以及它里面的方法,也在需要特定类“配合”这些接口来完成某些功能,特定类指的就是需要使用这些接口完成某项功能的类(比如Tree结构集合要按照一定规则排序而使用比较器排序,这里Tree结构集就是我说的特定类,比较器就是它需要用的接口)

    什么意思呢?打个不恰当的比方,这三种接口就相当于基站,而特定的类就相当于各种手机,我手机想要通过基站来通讯,不能只让基站发送信号,你手机却没有接受信号的功能,所以手机需要配合基站。这三个接口和这些特定类的关系就类似基站和手机。

    这里通过File类和文件过滤器来说,File类里有list(FilenameFilter filter)方法来接受文件过滤器的对象,File类的list(FilenameFilter filter)和文件过滤器接口中的accept(File file,String name)配合共同完成文件的过滤。同理,另外两种接口和其特定类也是类似的(不一定是如File类和文件过滤器一样是通过构造方法获取接口对象的方式来完成,这里我就不详细说明了)。对于文件过滤,或许每次需要过滤的文件不一样,所以才不在File类里定义一个方法实现,不然每次有新需求都得重写。而通过过滤器接口和File类的配合,每次只需要按照不同需求实现过滤器接口的方法就可以了。这里并没有详细说这三个接口配合相应的类如何实现功能的。我只是想表达为什么要设计接口和它可能的设计思想是什么(可能我理解的也不对)。