处理一个解析事件日志的项目,然后根据这些事件的属性更新模型。我对“完成它”非常懒惰,更关心前期优化、精简代码和正确的设计模式。主要是自学实验。我感兴趣的是更有经验的设计师认为哪些模式是相关的,或者哪种类型的伪代码对象架构是最好的、最容易维护的等等。
单个日志中可以有 500,000 个事件,大约有 60 种类型的事件,所有这些都共享大约 7 个基本属性,然后根据事件类型有 0 到 15 个附加属性。事件类型是日志文件中每一行的第二个属性。
因此,我尝试了一个非常丑陋的命令式解析器,它逐行遍历日志,然后逐行处理事件。然后我尝试了一个使用“nextEvent”模式的词法规范,该模式在循环中被调用并被处理。然后我尝试了一个简单的旧“解析”方法,它永远不会返回,只是将事件触发到注册的侦听器回调。无论事件类型如何,我都尝试了单个回调,以及特定于每种事件类型的回调方法。
我尝试了一个包含所有可能属性的基本“事件”类。我试图避免“新事件”调用(因为可能有大量事件并且事件对象通常是短暂的)并且每个类型都有带有原始属性参数的回调方法。我已经尝试为 60 种事件类型中的每一种创建一个子类,并使用一个具有 7 个公共基本属性的抽象事件父类。
我最近尝试更进一步,并使用命令模式为每种事件类型放置事件处理代码。我不确定我是否喜欢这种方法,它与每种类型的回调方法非常相似,只是代码位于类型子类中的执行函数内,而不是每种类型的回调方法。
问题是很多模型更新逻辑是共享的,其中很多是特定于子类的,我刚刚开始对整个事情感到困惑。我希望有人至少可以指出我考虑的方向!