推荐的软件设计模式来定义 CSV/XML 或任何其他格式生成器?

Recommended Software Design Pattern to define CSV/XML or any other format generator?

您好,我正在为我自己的项目编写一个 CSV/XML 包,我没有在那里使用包,因为在某些情况下我需要呈现超过 100.000.000 行的 CSV。所以我想当数据库查询需要很长时间时我的基本解决方案不起作用,然后我写了一个脚本来下载文件批处理它。它正在工作,我只想为 XML 扩展和重构它。使用良好的设计模式会很棒。

这个问题主要是基于意见的——我会告诉你我是如何解决这个问题的。
我最近在我的一个项目中遇到了同样的问题,我决定通过编写读写接口来解决这个问题。
结果,我得到了这样的代码:

public interface IReportReader
{
    Report ReadFromFile(string filePath);
    Report ReadFromStream(Stream stream);
}

public interface IReportWriter
{
    void WriteToFile(string filePath, Report report);
    void WriteToStream(Stream stream, Report report); 
}

然后,我实现了两个实现:

StubConsoleReportReader \ StubConsoleReportWriter - 仅用于调试目的。
CSVReportReader\CSVReportWriter

后来我很轻松地添加了XML、HTML和word输出格式

对于我来说,这种模式非常适合,因为:
1. 简单明了,无需过度工程化,易于扩展;
2. 这两个接口描述了两个基本操作——输入和输出,适用于任何现有的文件类型和格式。

PHP 中从事此类主题工作的几个图书馆正在实施 design pattern adapter,因为标准 PHP 图书馆(如果你想要表演,你应该使用)与每种文件提供了一个完全不同的界面。

因此,实际上,您只需要找到自己的接口即可(如果您可以识别不同的功能方面,则可以使用许多接口来做到这一点)。

Example of standard library for CSV in PHP: http://php.net/manual/fr/function.fgetcsv.php

Example of abstraction tool on type of file: https://github.com/KnpLabs/Gaufrette