Уменьшить объем памяти, заменив анонимный класс на singleton. Но нужно еще реорганизовать дизайн

Итак, у меня есть этот метод, который выполняется многократно

public static boolean isReady(String dirPath, int numPdfInPrintJob){
    File dir = new File(dirPath);
    String[] fileList = dir.list(new FilenameFilter(){
        public boolean accept(File file, String filename) {
            return (filename.toLowerCase().endsWith(".pdf"));
        }
    });
    if(fileList.length >= numPdfInPrintJob) return true;
    else return false;  
}

Этот метод использует анонимный класс , который создаст новый экземпляр FilenameFilter каждый раз вызывается, и я часто вызываю этот метод. Поэтому я хочу превратить этот анонимный класс в синглтон . Поэтому моя первоначальная мысль - создать новый singleton , которые выглядят так

public class PdfFileNameFilter implements FilenameFilter{
    private PdfFileNameFilter(){} //non-instantible

    //guarantee to only have one instance at all time
    public static final PdfFileNameFilter INSTANCE = new PdfFileNameFilter();

    public boolean accept(File dir, String name) {
        return (name.toLowerCase().endsWith(".pdf"));
    }
}

Могу ли я немного реорганизовать это. Мне также нужно сделать ZipFileNameFilter и, возможно, множество различных фильтров расширений файлов. Не хочу создавать класс для каждого фильтр. Мне нужно немного реорганизовать этот дизайн. Может быть, где-то здесь появится интерфейс .

5
задан Thang Pham 3 June 2011 в 14:21
поделиться