我需要完成诸如从xls源(ole db)加载数据,根据输出文件的规范对其进行格式化,合并proccessed字段,然后将其保存到csv等内容。
如何处理必须属于某种类型的多个数据字段?以某种方式格式化 - 等等
我很难抽象出这个问题的类结构。
哪种设计模式最适合我?
答案 0 :(得分:1)
我最初不会考虑设计模式,而是至少在开始时将问题分解成更小的部分。
现在,您的描述可能有点模糊,无法真正详细了解实际处理,但从中我可以识别出至少三个部分:
您可能想要将您的读者和作者都视为处理文件或流的方式。例如,您的读者可以:
Open
Read
(只读一个项目)Close
对于作者来说也是如此,但Write
。
抽象两个接口,一个IDataReader
和一个IDataWriter
,让你的IDataProcessor
与读者和作者互动,但只能通过接口。
拥有这些合同意味着您可以为读者设置一个实现,例如XLSReader : IDataReader
和CSVWriter : IDataWriter
,而处理器不必担心其内部解决方法
通过这些抽象,您可以独立地(通过模拟其他部分)为每个部分编写干净且独立的单元测试,这将让您在开发过程中测试每一步。
此外,这些类型的合同允许您处理小数据包中的数据,而不是大量数据(如大DataTable
等),测量进度等。
现在,根据您的实际需求,您可以获得读者提供的数据类型的模式或定义,输出,格式化程序和变换器的相同,可以改变输入数据并构建输出等。