Шаблон проектирования: какой шаблон подходит для проектирования FileProcessor, который читает файл XLSX, а также может читать файл ZIP, содержащий несколько файлов XLSX. - PullRequest
0 голосов
/ 09 июля 2020

У меня есть класс, который должен читать файлы XLSX, но обрабатываемый файл также может быть файлом ZIP, содержащим файлы XLSX.

У меня следующий дизайн:

FileReader: Интерфейс для чтения файлов xlsx Worksheet.

interface FileReader {
    // returns array of worksheet rows
    public function readSheet(string file, string sheetName): array
}

XlsxFileReader реализует средство чтения файлов, использующее пакет PHPSpreadsheet для чтения и возврата строк рабочего листа.

FileProcessor : обрабатывает файл (ы) с помощью XlxsFileReader, DataMapper для сопоставления каждой строки рабочего листа с ожидаемой структурой и форматом.

Этого достаточно для чтения файла .xlsx и обработки это.

Моя проблема в том, что у меня есть требование обрабатывать zip-файлы, содержащие файлы xlsx.

Должен ли мой обработчик zip-файлов расширять FileProcessor? И в этом случае извлечь файлы, а затем передать файлы в файловый процессор?

1 Ответ

1 голос
/ 09 июля 2020

IMHO шаблон стратегии больше подходит для этого варианта использования, завтра у вас будет другой тип файла для обработки и так далее https://refactoring.guru/design-patterns/strategy

...