Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 是否有一个“问题”;“数据转换对象”;原则/模式?_C#_Oop_Design Patterns - Fatal编程技术网

C# 是否有一个“问题”;“数据转换对象”;原则/模式?

C# 是否有一个“问题”;“数据转换对象”;原则/模式?,c#,oop,design-patterns,C#,Oop,Design Patterns,我最近有一个问题关于。 (请先阅读此问题) 给出的一些答案指出,我的设计可能有缺陷 因为最后一个问题是关于固定长度的字符串,所以这个问题是关于基本原理的。这个问题可能有点长,请耐心听我说 要求: 我有一个普通的文本文件,其中的值具有指定的固定长度。这种文本文件的标准来自90年代。我必须创建这样一个文件 一个文件可以包含1-60行 有10种不同类型的行 一行的值介于10-40之间 指定的行如下所示: 早在90年代,就有一个创建这些文件的应用程序,它将文件放在服务器上,然后服务器读取文件并对其进行

我最近有一个问题关于。 (请先阅读此问题)

给出的一些答案指出,我的设计可能有缺陷

因为最后一个问题是关于固定长度的字符串,所以这个问题是关于基本原理的。这个问题可能有点长,请耐心听我说

要求

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

  • 一个文件可以包含1-60行
  • 有10种不同类型的行
  • 一行的值介于10-40之间
  • 指定的行如下所示:

    早在90年代,就有一个创建这些文件的应用程序,它将文件放在服务器上,然后服务器读取文件并对其进行处理,比如将文件写入数据库或通知某人出了问题等

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

    建议设计

    取而代之的新应用程序不以导出的形式提供任何数据,但它有一个包含值的数据库。我有责任写一个转换器。因此,我必须获取数据并编写一个导出的文本文件。数据只发送,从不接收

    问题

    因为DTO的唯一目的是传输状态,所以不应该有任何行为()
    是否存在类似“数据转换对象”的东西,其目的是转换传输的数据?是否有适用的设计模式?

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

    问题是:

  • 有一些纯文本文件
  • 这些文件有规格、布局、字段、类型等
  • 这些文件需要转换为其他格式
  • 解决方案(面向对象): 我将定义三个类:PlainTextFile、Specification、Output和Reader类

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

    纯文本文件:这可以是文本文件的句柄,如果添加了其他功能,也可以是句柄周围的包装器。我更喜欢第二种选择

    输出:这是您希望生成的输出

    阅读器:它接受两个输入,明文文件和规范。使用规范读取和解析明文文件,并以输出对象/格式写入输出

    现在,输出可以是最后一步,也可以不是。我建议读者只做这么多。如果要将输出写入数据库,或将其发送到某个地方,请创建另一个类来执行此操作


    记住,我不知道这个图案的名字。事实上,我觉得这没什么大不了的。对我来说,这种方法解决了该公司十年来存在的一个问题,它集成了该公司最常用的两个系统。

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

    问题是:

  • 有一些纯文本文件
  • 这些文件有规格、布局、字段、类型等
  • 这些文件需要转换为其他格式
  • 解决方案(面向对象): 我将定义三个类:PlainTextFile、Specification、Output和Reader类

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

    纯文本文件:这可以是文本文件的句柄,如果添加了其他功能,也可以是句柄周围的包装器。我更喜欢第二种选择

    输出:这是您希望生成的输出

    阅读器:它接受两个输入,明文文件和规范。使用规范读取和解析明文文件,并以输出对象/格式写入输出

    现在,输出可以是最后一步,也可以不是。我建议读者只做这么多。如果要将输出写入数据库,或将其发送到某个地方,请创建另一个类来执行此操作


    记住,我不知道这个图案的名字。事实上,我觉得这没什么大不了的。对我来说,这种方法解决了该公司十年来存在的一个问题,它集成了该公司最常用的两个系统。

    有一种模式可以进行这种数据转换操作:。任何其他的事情,你都会想得太多。你仍然可以有行为方面的DTO。我不会试图锁定某个特定的方法或模式,只是做一些可行的事情,然后将其作为一个理所当然的事情加以完善。这就像是一件大事,但问题其实很小,你把它复杂化了。在导出过程中,无论何时可以导出或不导出数据,都需要验证数据。没有别的了。没有额外的抽象。使用某些属性进行自动验证是可以的,但是“数据转换对象”?它只是一个接收一个类型并生成另一个类型的方法,当然,将它放入另一个类中(将此方法放在其中一个类中耦合类型是没有意义的),但仅此而已。另一个问题是,无论何时开始使用特殊类型来保存基本类型都是有意义的…@Sinatr事实上,我的解决方案似乎非常简单。用数据库中的值填充对象,然后检查其有效性,并在需要时用空格拉伸/填充。r