2015-02-12 3 views
1

Мне было интересно, можно ли потребовать определенный тип файла в конструкторе класса?указать тип файла в параметре метода

Например:

private class name(File location.txt) 

Я хочу иметь другой конструктор для каждого типа формата файла, который я собираюсь поддержать. Я мог бы написать метод, который проверяет файл и отправляет его соответствующему методу, но задавался вопросом, можно ли пропустить эту логику?

+2

Пожалуйста, добавьте тег для языка, который вы используете - рассмотрит Фабрику: 'статический TheClass CreateFromExtension (строка файл)' –

+0

@Alex K. спасибо, не могу поверить, что я забыл этот тег. и я не совсем уверен, что такое фабрика ... но это дает мне кое-что, что нужно прочитать. –

ответ

0

Я надеюсь, что этот мини-образец завода будет работать для вас:

public class Test { 

    private FileReaderFactory fileReaderFactory = new FileReaderFactory(); 

    public static void main(String[] args) { 
     String fileTxt = "test1.txt"; 
     String filePdf = "test2.pdf"; 

     Test test = new Test(); 
     FileTypeI filereaderTxt = test.fileReaderFactory.createFromExtension(fileTxt); 
     FileTypeI filereaderPdf = test.fileReaderFactory.createFromExtension(filePdf); 

     filereaderTxt.readFile(); 
     filereaderPdf.readFile(); 
    } 

    public interface FileTypeI { 
     void readFile(); 
    } 

    class TextFileReader implements FileTypeI { 
     @Override 
     public void readFile() { 
      //Code to read Text File 
     } 
    } 

    class PDFFileReader implements FileTypeI { 
     @Override 
     public void readFile() { 
      //Code to read PDF File 
     } 
    } 

    class FileReaderFactory { 
     public FileTypeI createFromExtension (String filename) { 
      FileTypeI returningValue = null; 
      if (filename != null && filename.endsWith(".txt")) { 
       returningValue = new TextFileReader(); 
      } 
      else if (filename != null && filename.endsWith(".pdf")) { 
       returningValue = new PDFFileReader(); 
      } 
      return returningValue; 
     } 
    } 

} 
+0

Спасибо, я получаю общее представление о том, что происходит здесь. Я должен прочитать это, но я думаю, что ты указываешь мне в правильном направлении! –

+0

Завод представляет собой шаблон дизайна. Образец выше - один из способов его реализации. Вот еще [образец] (http://www.tutorialspoint.com/design_pattern/factory_pattern.htm) Идея изначально была из @ alex-k в комментарии к вашему сообщению. ;) – vianna77

+0

Удивительный, спасибо! так как вы отправили ответ, я помету ваш как правильный и больной комментарий alex. Спасибо за помощь, ребята! –

Смежные вопросы