代码之家  ›  专栏  ›  技术社区  ›  edosoft

使用C语言中的只读类进行设计#

  •  3
  • edosoft  · 技术社区  · 14 年前

    小设计问题。我正试着用c_开发一个计算应用程序。我有一个类,我们称之为inputrecord,它包含100个字段(多维数组),这个inputrecord类将用于许多计算引擎。每个计算引擎都可以更改inputrecord中的许多字段。这些变化是计算所需的步骤。

    现在我不希望对inputrecord所做的本地更改用于其他CalculationEngine的类。

    想到的第一个解决方案是使用结构:这些是值类型。不过,我想使用继承:每个calculationengine只需要几个与该引擎相关的字段:它有自己的inputrecord,基于baseinputrecord。

    有谁能给我指一个能帮我完成这个任务的设计吗?

    3 回复  |  直到 14 年前
        1
  •  2
  •   Lucero    14 年前

    如果您真的有很多数据,使用结构或常见的克隆技术可能不是很节省空间(例如,它将使用大量内存)。

    听起来像是一个需要有一个“主存储”和一个“差异存储”的设计,就像是一个有数据文件和事务的RDBMS。

    基本上,您需要保留每个计算引擎执行的更改的列表,并对不受任何更改影响的项使用主值。

        2
  •  2
  •   Henk Holterman    14 年前

    最好的解决办法是 更改inputrecord。这将允许共享(和并行处理)。

    如果这不是一个选项,你将不得不克隆数据。为每个派生类提供一个构造函数,该构造函数将基输入作为参数。

        3
  •  1
  •   Seb    14 年前

    可以在baseinputrecord上声明clone()方法,然后将副本传递给每个calculationengine。