建议使用软件设计模式来定义CSV/XML或任何其他格式生成器


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

嗨,我正在为自己的项目编写一个CSV/XML包,我没有在那里使用包,因为在某些情况下,我需要渲染行数超过100.000.000的CSV。所以我认为当数据库查询需要很长时间时,我的基本解决方案不起作用,然后我写了一个脚本来下载文件批处理它。它起作用了,我只想为XML扩展并重新考虑它。如果有一个好的设计模式,那就太好了。

在PHP中处理这类主题的几个库正在实现一个设计模式适配器,因为与每种文件相关联的标准PHP库(如果需要性能,应该使用(提供了完全不同的接口。

所以,事实上,你只需要找到自己的接口(如果你能识别不同的功能方面,你可以用许多接口来做到这一点(。

PHP中CSV的标准库示例:http://php.net/manual/fr/function.fgetcsv.php

关于文件类型的抽象工具示例:https://github.com/KnpLabs/Gaufrette

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

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和单词输出格式。

就我而言,这种模式非常适合,因为:
1.简单明了,不需要过多的工程设计,易于扩展
2.这两个接口描述了两个基本操作——输入和输出,它们适合任何现有的文件类型和格式。