代码之家  ›  专栏  ›  技术社区  ›  Keith Sirmons

解析二进制文件数据并存储在数据库中的设计模式

  •  6
  • Keith Sirmons  · 技术社区  · 16 年前

    有人推荐一种设计模式来获取二进制数据文件,将其中的一部分解析为对象,并将结果数据存储到数据库中吗?

    通用数据结构包括:

    (标题)(DataElement1)(DataElement1SubData1)(DataElement1SubData2)(DataElement2)(DataElement2SubData1)(DataElement2SubData2)(EOF)

    我认为一个好的设计应该包括一种根据文件类型或头中包含的某些已定义元数据更改解析定义的方法。那么 Factory Pattern 将是解析器部分总体设计的一部分。

    4 回复  |  直到 12 年前
        1
  •  21
  •   Orion Edwards    16 年前
    1. 只需使用您想到的任何技术编写您的文件解析器
    2. 为它编写大量的单元测试,以确保覆盖了所有的边缘情况

    现在你脑子里只会浮起一些理论,其中大部分都会被误导。

    第三步:无情地重构。您的目标应该是删除大约一半的代码

    您会发现,您的代码在最后要么类似于现有的设计模式,要么创建了一个新的设计模式。您将有资格回答此问题:-)

        2
  •  4
  •   Henrik Gustafsson    16 年前

    我完全同意Orion Edwards的观点,这通常是我处理问题的方式;但最近我开始看到一些疯狂的模式。

    interpreter (或 strategy )这需要一些时间 builder (或 factory )创建数据的每个部分。

    对于流式数据,整个解析器看起来像一个 adapter ,从流对象适配到对象流(通常只是一个队列)。

    对于您的示例,可能有一个用于完整数据结构(从head到EOF)的构建器,它在内部使用用于内部数据元素的构建器(由解释器提供)。一旦遇到EOF,将发出一个对象。

        3
  •  1
  •   Campbell    16 年前

    战略模式也许是你想看的。策略是文件解析算法。

    然后您需要一个单独的数据库插入策略。

        4
  •  1
  •   Peter Wone    16 年前