Как сделать шаблон абстракции / дизайна, когда возвращаемые типы различны - PullRequest
0 голосов
/ 12 марта 2019
public final class ExcelReader{
    /**
     * @param file File object of the excel file
     * @param sheetNumbers integer array holding the sheet offset/numbers. Note offset starts from 0. So 0 is first sheet.
     * @return List of Sheets, where each <Sheet> hold a list of Rows, where each <Row> holds a list of Columns
     */
    public List<List<List<String>>> read(File file, final int ... sheetNumbers){
        //return List<List<List<String>>>
    }
}

public final class CSVReader{
    /**
     * @param file File object of the excel file
     * @return List of Rows, where each <Row> holds a list of Columns
     */
    public List<List<String>> read(File file){
        //return List<List<String>>
    }
}

В будущем у меня может быть читатель HTML или другой читатель

Я пытался использовать стратегию с шаблоном фабричного дизайна с общим интерфейсом

public interface FileReader {
    //Return type is different for different readers
    public <TODO> read(File file); 
}

, но потом понялтипы возврата различны, и кто знает, какой тип возврата может иметь HTMLReader, возможно, даже пользовательский объект.

Я не уверен, как соединить все эти вещи вместе с абстракцией.Может ли кто-нибудь пролить свет.

Я нашел это обсуждение Шаблоны проектирования - что использовать, когда тип возвращаемого значения отличается , но я не смог понять, как я могу использовать его в своемcase.

Спасибо, что прочитали

...