分层设置的模式

时间:2014-10-22 07:31:32

标签: ruby-on-rails database design-patterns settings hierarchy

假设软件具有设置层次结构:

- system settings
-- company settings
--- department settings

一些父设置是孩子的默认设置,可以覆盖。

将设置存储在数据库中的最佳做法是什么?代码结构应该如何?

我正在考虑将设置存储为键/值,并将选项设置为默认值。许多设置被组合到一个引用其中一个层次结构的设置集。 在例如代码中我会从公司获得设置集并搜索一个必需的设置。如果所需设置为NULL,我将在系统设置集中查找所需的默认设置。

我很欣赏这方面的任何建议/模式。

1 个答案:

答案 0 :(得分:1)

这里可以做很多事情。这取决于您的实际设计和目标。 Behavioral 点的一个可能解决方案是State design pattern,因为它在状态发生变化时会改变对象的行为。我目前正在用它来保留

  

孩子的默认值,可以覆盖

取决于目前正在经历的国家。如果您只想加载相应的集合,我认为这是一个很好的解决方案。

但是如果您需要在

中使用 Creational 方法
  

将设置存储在数据库中

Abstract factory是一种方法。它允许您创建几个类族的实例,并提供一个接口,用于创建相关或从属对象的族,而无需指定其具体类(因此您可以实现覆盖)。

Composite将帮助您创建简单和复合对象的树状结构,并表示此部分整体层次结构。 Composite允许客户统一处理单个对象和对象组合。

我知道这是抽象的解决方案,但概念可以恰到好处地完成工作。