我正在通过网络接收简单数据,即文本中的名称/值对。我需要编写一个流程来获取这些对,将它们切碎并通过事件总线将它们发送到不同的区域进行处理。每个名称代表不同的数据“类型”或我必须对字符串的值部分执行的转换操作。
从表面上看,这非常简单,但我正在寻找一个简单、“正确”的架构来执行此操作,以便我可以转换 300 种不同类型的值。这是一个简单的例子:
输入:
9,19.0,31,0.00,34,0.379579,37,1.319952,55,0.03,66,0.00,81,1.558965,82,1.578690,92,0.03,99,24.57,100,-8144.29,101,0.13,105,2.999,106,148.3,108,-155.8,111,4.263,112,155.0,113,-170.0,167,10.60,205,1.558965,231,-0.040,232,-93.8,237,75.0,238,0.100
真正的意思是:
9,19.0
31,0.00
34,0.379579
等等...
对于“34”事件,我必须将该数字转换为不同的值以显示给用户。因此,每种事件类型都可能有不同的转换过程。实际上,我认为所有 300 种事件类型中可能存在多组转换过程(例如 12 个)。
这是我的问题。
如何处理所有转换类型?这是否类似于可以注入(inject)解析器的排序算法或比较器?
如何才能高效地创建对象和 GC?这些对来自网络,我不想仅仅丢弃可 GC 的对象(我使用的是 Android)。
我应该将各种类型映射到公共(public)汽车上的事件,并且只让消费者注册他们感兴趣的事件,还是应该向每个消费者发送通用事件并让他们每次做出决定(我在想前者,但也害怕样板)。
任何一般性的想法将不胜感激。
最佳答案
我最终让编译器为我担心了。我有一个巨大的 switch 语句,其中针对每种特定类型的转换有很多很多情况。
我还梳理了代码并提取了我将重用的对象声明。我确保它们在想要使用它们的函数之上声明,然后我在函数中尽早将它们设置为它们需要的任何值。
对于我正在收集的网络数据,我有一个事件类型。我让每个接收者决定是否关心该事件。这只是消除了必须编写大量样板代码才能让工厂创建每种不同的事件类型。
关于java - 在 Java 中解析 EventBus 的不同值类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26414261/