gpt4 book ai didi

design-patterns - 寻找处理 'reference data' 的设计模式

转载 作者:行者123 更新时间:2023-12-02 05:07:28 25 4
gpt4 key购买 nike

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

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

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

  • 存储数据的表
  • 将记录本身保存在内存中的业务对象(这太过分了)
  • 读取和查询数据的服务类
  • 需要时,一个枚举,这样我就可以引用内存中的某些引用数据项(例如,如果我想引用“暂停”状态,而无需在任何地方硬编码“4”。

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

我目前的方法似乎很笨拙,我想对其进行修改,以便更容易使用。但在我深入研究并创建稍微好一点的东西之前,您能否推荐或指出管理和使用引用数据的最佳实践?

最佳答案

据我了解,您的问题是组件激增,因为每个引用数据类别设计只有一个表。

另一种方法是使用具有以下架构的单个表:

类型值“国家”美国“国家”加拿大“状态”“就绪”“状态”“暂停”

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

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

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

getCountryList();
addCountry();

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

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

只是一个裂缝。

关于design-patterns - 寻找处理 'reference data' 的设计模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9527320/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com