2014-10-22 58 views
2

假设该软件具有的设置层次:模式的分级设置

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

少数的家长设置为孩子默认设置,并可以覆盖。

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

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

我很感谢在这方面的任何建议/模式。

回答

1

这里可以做很多事情。这取决于你的实际设计和目标。形成行为点的一种可能的解决方案是State design pattern,因为它在状态更改时会改变对象的行为。我目前使用它来保持

默认为孩子和可重写

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

但是如果你需要在数据库中

Abstract factory使用创力办法,

店的设置是一条路可走。它将允许您创建几个类族的实例,并将提供一个接口来创建相关或依赖对象的族,而不指定它们的具体类(因此您可以实现覆盖)。

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

我知道这是抽象的解决方案,但概念可以完成正确的工作。