哈o

我正在编写用于网络使用的tier2订购软件。因此,我们有客户端和服务器。

在客户端上,我创建 TBest 的对象,在其中存储了产品ID,数量和订购用户。 (因此,这是一个订单项)。

一个订单可以有多个项目,这些项目将保存在数组中,以便以后将创建的订单发送到服务器。包含数组的类称为 TBestellung

所以我都创造了

TBest.toString: string;


TBest.fromString(source: string): TBest;

现在,我通过套接字将toString结果发送到服务器,并在服务器上使用fromString创建对象(它解析接收到的属性)。这按预期工作。

问题:
有没有更好,更优雅的方法呢?序列化是一个关键字,是的,但是当您序列化包含其他对象数组(在这种情况下为TBest)的对象(在这种情况下为TBestellung)时,这不是很糟糕/困难吗?


//小修改:在被询问之前。是的,我应该为toString和fromString创建一个额外的(静态)类,因为否则服务器需要创建一个“空” TBest,以便能够使用fromString。

最佳答案

有用于Delphi的免费序列化库(也用于Free Pascal):

  • JSON:SuperObjectlkJSON
  • XML:OmniXMLNativeXML

  • JSON和XML是跨平台/跨语言的,这可能对将来与其他系统(例如基于PHP的Web shop)的接口(interface)很有帮助。它们也是免费和开放的标准(无供应商锁定)

    更新:我不会使用基于构造函数的方法,虽然一开始看起来很琐碎,但(反)序列化可能会变成一个复杂的过程,它将为需要序列化的类添加越来越多的非特定于类的代码。取而代之的是,我将使用“builder”/“parser”类(工厂模式)来使职责清晰且相关性低。

    08-26 12:54