Design Pattern:哪种模式适合读取XLSX文件的FileProcessor设计,也可以读取一个包含多个XLSX文件的zip文件

Design Pattern: Which pattern is suitable for FileProcessor design that reads XLSX file and can also read a zip file that contains multiple XLSX files

我有一个 class 可以读取 XLSX 文件,但要处理的文件也可以是包含 XLSX 文件的 ZIP 文件。

我有以下设计:

FileReader: 读取 xlsx 工作表文件的接口。

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

XlsxFileReader 实现文件 reader 使用 PHPSpreadsheet 包读取和 return 工作表行。

FileProcessor:它使用 XlxsFileReader、DataMapper 处理文件,将每个工作表行映射到预期的结构和格式。

这足以读取 .xlsx 文件并对其进行处理。

我现在的问题是我还需要处理包含 xlsx 文件的 zip 文件。

我的 zip 文件处理器应该扩展 FileProcessor 吗?在这种情况下,提取文件然后将文件传递给文件处理器?

恕我直言,策略模式更适合这个用例,明天您将处理另一种文件类型,依此类推https://refactoring.guru/design-patterns/strategy