是否有“数据转换对象”原则/模式?

时间:2016-05-13 09:53:29

标签: c# oop design-patterns

我最近有一个关于String Object with fixed length C#的问题。 (请先阅读此问题

给出的一些答案指出我的设计可能存在缺陷。

由于最后一个问题是关于字符串,固定长度,这个问题与基本原则有关。这个问题可能有点长,所以请求我。

要求

我有一个纯文本文件,其中包含指定固定长度的值。这个文本文件的标准来自90年代。我必须创建这样一个文件。

  1. 文件可能包含1-60行。
  2. 有10种不同类型的行。
  3. A Row的值在10到40之间。
  4. 行指定如下:

    Specs Table

    回到90年代,有一个应用程序创建了这些文件放在服务器上,然后服务器读取文件并做了一些事情,比如把它写到数据库或通知某人出了什么问题等等。

    enter image description here

    由于最近的法律变更,此应用程序不再可用。

    推荐设计

    新的应用程序不会以导出的形式提供任何数据,但它有一个包含值的数据库。我有责任写一个转换器。所以我必须获取数据并编写导出的文本文件。数据仅发送,从未收到过!

    enter image description here

    问题

    因为A DTO的唯一目的是传递状态,而且应该没有行为(POCO vs DTO) 是否有类似“数据转换对象”的东西,其目的是转换被转移的数据?是否有适用的设计模式?

1 个答案:

答案 0 :(得分:0)

我最近为类似的问题设计了一个解决方案,尽管我的解决方案是使用SAS语言,而不是面向对象的。但是,对我来说,似乎问题几乎是一样的。现在,让我们剖析问题:

问题:

  1. 有一些纯文本文件。
  2. 这些文件包含有关布局,字段,类型等的规范。
  3. 这些文件需要转换为其他格式。
  4. 解决方案(面向对象): 我将定义三个类,PlainTextFile,Specification,Output和Reader Class。

    规范:承包商采用规范(可能存储在文件中),并将其解析为规范对象。

    PlainTextFile :如果添加了其他功能,可以处理文本文件或句柄周围的包装。我更喜欢第二种选择。

    输出:这是您要制作的输出。

    阅读器:它需要两个输入,PlainTextFile和Specification。使用Specification读取和解析PlainTextFile并以Output对象/格式写入输出。

    现在,输出可以是最后一步。我建议,读者只做这么多。您希望将输出写入数据库,或将其发送到某处,创建另一个类来执行此操作。

    请记住,我不知道这个模式的名称是什么。实际上,我认为这并不重要。对我来说,这种方法解决了公司十年来存在的一个问题,它集成了两个最常用的系统。