【问题标题】:Persisting Objects while Still Preserving Loose Coupling在保持松散耦合的同时保持对象
【发布时间】:2012-07-31 18:57:08
【问题描述】:

我在微控制器中处理一个项目,我需要保留一些设置。假装这是一个 iPod。我需要保存各种设置,如CurrentSongPlayingCurrentVolume 等,这样当我再次打开时,我可以恢复这些设置。我遇到的麻烦是将我所有的非易失性设置存储在一个结构中是有意义的,我可以从内存中序列化/反序列化,但是如果没有类执行,我无法找到一种方法来实现这一点来自非易失性存储器的序列化/反序列化,包括每个包含需要保存以获取大小/类型信息的设置的类。是否有某种设计模式可以让我将所有这些设置保存到内存中,而不必知道我正在保存什么?

【问题讨论】:

  • 你能举一个例子,至少是伪代码,你想要实现的目标吗?
  • 你不能转用 C++ 吗?继承/多态让所有这些事情变得更容易!
  • 看起来你只需要一个关联数组。
  • @netcoder - 这看起来正是我需要的,你应该让你的评论成为答案。

标签: c persistence loose-coupling cohesion


【解决方案1】:

看起来您只需要一个associative array。关联数组(或映射)是一个容器,允许您将不同的值映射到唯一键。根据实现,它可以具有固定或动态大小。再加上适当的序列化机制,它可以让你保存和恢复它的状态,而不必事先知道它的内容。

但是,C 并未提供这种开箱即用的数据结构。 Look at this question for a few implementations. 最常见的实现是hash table,也称为哈希映射。

【讨论】:

    【解决方案2】:

    OOP 和类在 C 中不容易实现。

    如果必须使用 C,我会将结构写入文件。

    然后我会在重启时读取它们并在初始化期间解析它们。

    您可以将其视为自己序列化您的结构。

    【讨论】:

    • 这是我在我的问题中建议的方法,问题是我必须包含我想要序列化的任何“对象”(类型)的所有其他“类”(头文件),所以struct 可以知道它们。如何避免写入/读取的“类”必须包含每个包含我想保存在内存中的“对象”的文件。
    猜你喜欢
    • 2017-11-09
    • 1970-01-01
    • 2013-03-26
    • 1970-01-01
    • 2017-06-05
    • 2011-02-03
    • 2020-10-26
    • 2011-02-22
    • 1970-01-01
    相关资源
    最近更新 更多