2012-07-20 34 views
0

我之间昂贵的工作:它是好还是不好有临时字段来保存模块

  • 原始对象:包含原始数据导入到系统
  • 模块#1之前:验证这将验证原始对象
  • 模块#2:更新器,其将使用验证原始数据(无效数据被拆除),以产生真实对象

模块#1必须确定数据库中是否存在ItemCode(只是一个示例,键的实际数量是几十个)。模块#2必须通过在数据库中查询ItemCode得到项目对象

开发者想的外国侨民的财产.TempItem添加到生对象,使模块#1将Item对象分配给.TempItem财产(因为它是超级容易做到这一点)和模块#2只需要使用.TempItem而不需要第二次查询数据库。

我的技术专家建议它不好。

我想遵循编程原则和最佳实践,但不知道如何。

任何帮助表示赞赏。

回答

1

模块#1和#2的含义是流水线过程。 #1的输出传递到#2。 #1已经确定的#2需要的任何信息可以(可以说是应该)被缓存。

我会创建一个额外的对象来通过管道传递这个状态信息(@astander建议使用一个字典,但在很多情况下,一个硬编码的对象可以精确地存储您需要的数据,这些对象将很容易编写, /维护)

使用“tempitem”本质上是相同的机制,但执行不力的它 - 想法是一样的,但(没有从数据库中读取相同的信息多次)

通过通过你的管道传递一个状态对象,让流水线处理器保持松散耦合(#2不需要知道#1,它只是作用于传入的状态信息),这使得将来可以更容易地添加新的流水线阶段或重构您的模块。通过在一个单独的类中传递数据,它还可以很容易地添加新的状态数据以通过系统传递。

1

我不认为你需要添加临时项目的原始对象。

您可以使用缓存,并将对象存储在字典/列表中,并将其传递给Module2以用于查找。

在模块2中,您可以检查对象是否在缓存的字典/列表中(字典应该更容易,因为您可以根据键查找值),如果它不存在,则只能从数据库。

相关问题