更可取的是:枚举或单例

本文关键字:枚举 单例 | 更新日期: 2023-09-27 17:58:09

我有以下问题:

在代码中使用状态的首选方式是什么,枚举或单例?

我在数据库中存储了状态值及其ID。如果deDB中的状态发生了更改,则还需要对代码进行一些更改。

根据惯例,现在有人更喜欢什么吗?

我一直在网上找,但找不到明确的答案。

更可取的是:枚举或单例

这在一定程度上取决于您的状态的ID是否具有保证值,或者ID是否可以根据数据库进行更改(通过IDENTITY)。就我个人而言,对于我更喜欢固定的状态(这给了你最大的灵活性和最少的开销),你可以选择使用枚举(或者如果更方便的话,可以使用一些常量),而且你永远不必添加间接,即"获取open的id"。

不过,这并不总是可能的,而且当不是时,缓存和重用它们仍然非常有用(以避免在查找时碰到DB)。然而,我会避免使用singleton,尤其是因为如果你需要与多个数据库进行对话,它不会很好地发挥作用——每个数据库中的id可能不同。然而,任何合适的缓存实现(或者IoC/DI)都应该允许您存储合适的数据(可能是某种字典)。单身汉也只是有点痛苦如果你喜欢测试等,通常

但是:枚举和固定的id值要简单得多。

请注意,在任何实现下,更改状态列表都是一项不平凡的操作,尤其是它将是一个大的UPDATE(如果您被非规范化,则是几个)。

如果您打算在整个应用程序中使用Status,并且它是标准化的,那么它最适合Enum

Enum Status
{Open, Pending, Closed, Deferred}

这也使代码更加可读