寻找处理“参考数据”的设计模式

时间:2012-03-02 02:52:40

标签: design-patterns

我的应用程序是一个非常典型的业务应用程序,它有很多参考列表。例如,我可能有一个表具有状态(暂停,正在进行,完成等),或包含国家/地区的表,或包含选项列表的表。

目前我将此参考数据存储在表中,每种类型有一个表(例如,状态表,国家/地区表等)。然而它现在变得混乱,处理它的开销太高了。 (添加新的参考表意味着更新所有相关的基础设施)。

目前我的解决方案有4个部分:

  • 用于存储数据的表格
  • 用于将记录本身保存在内存中的业务对象(这是一种过度杀伤)
  • 用于阅读和查询数据的服务类
  • 当需要时,Enum所以我可以参考内存中的某些参考数据项(例如,如果我想在没有硬编码“4”的情况下参考“保持”状态。

我环顾四周,发现了一个相关的问题here,但它更侧重于缓存。我正在寻找专注于参考数据整体处理的最佳实践。

我目前的方法看起来很笨拙,我想重做它,因此更容易使用。但在我深入研究并创造出稍微好一些的东西之前,您能否建议或指出管理和使用参考数据的最佳实践?

1 个答案:

答案 0 :(得分:0)

我理解的问题是组件的激增,因为每个参考数据类别设计都有一个表。

另一种方法是使用以下模式的单个表:

键入值 “国家”美国 “国家”加拿大 “状态”“就绪” “状态”“OnHold”

然后,您可以拥有一个知道如何将此模式存储到数据结构中的智能类,例如:

Set<String> countries;
Set<Status> status;
..
..

您可以使用单个API或具有特定方法的单独API,例如:

getCountryList();
addCountry();

API将封装以任何形式智能地返回适当数据结构的细节,以及添加新数据结构。

如果你有一些这些项目,并且不想制作这些项目的多个副本(并且只是重复使用内存中的现有单个副本),你也可以使用FlyWeight模式。上述API将是FlyWeight(http://en.wikipedia.org/wiki/Flyweight_pattern)。这将解决一些效率问题。

只是一个裂缝。