C# 在模块之间使用临时字段来节省昂贵的工作是好还是不好
我有:C# 在模块之间使用临时字段来节省昂贵的工作是好还是不好,c#,solid-principles,principles,C#,Solid Principles,Principles,我有: 原始对象:在导入到系统之前包含原始数据 模块#1:验证原始对象的验证器 模块#2:更新程序,将使用已验证的原始数据(已删除无效数据)生成真实对象 模块#1必须确定数据库中是否存在ItemCode(仅举一个例子,实际的键数是几十个)。模块#2必须通过查询数据库中的项目代码来获取项目对象 开发人员希望将一个外来属性.TempItem添加到原始对象,以便模块1将项目对象分配给.TempItem属性(因为这样做非常容易)模块2只需使用.TempItem,无需再次查询数据库 我的技术专家建议说
- 原始对象:在导入到系统之前包含原始数据
- 模块#1:验证原始对象的验证器
- 模块#2:更新程序,将使用已验证的原始数据(已删除无效数据)生成真实对象
非常感谢您的帮助。我认为您不需要将临时项添加到原始对象中 您可以使用缓存,将对象存储在字典/列表中,并将其传递给Module2以用于查找 在模块2中,您可以检查对象是否在缓存字典/列表中(字典应该更容易,因为您可以根据键查找值),如果它不存在,则只从数据库中加载它。模块1和模块2的功能是一个管道过程。#1的输出传递到#2。#2需要的任何信息#1已经确定可以(可以说应该)缓存 我会创建一个额外的对象来通过管道传递此状态信息(@astander建议使用字典,但在许多情况下,一个硬编码的对象可以精确地存储您所需的数据,它将易于编写,并且更易于使用/维护) 使用“tempitem”本质上是相同的机制,但是它的实现很差——尽管想法是一样的(不要多次从数据库中读取相同的信息) 通过在管道中传递状态对象,可以使管道处理器保持松散耦合(#2不需要知道#1,它只作用于传入的状态信息),这使得以后添加新的管道阶段或重构模块变得更容易。通过在一个单独的类中传递数据,还可以很容易地添加要通过系统传递的新状态数据