2014-10-22 49 views
2

假設該軟件具有的設置層次:模式的分級設置

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

少數的家長設置爲孩子默認設置,並可以覆蓋。

將設置存儲在數據庫中的最佳做法是什麼以及代碼結構應如何顯示?

我正在考慮將設置存儲爲鍵/值,並將其設置爲默認值。許多設置被組合到一個引用其中一個層次結構的設置集中。在代碼例如我會從公司獲得設置並搜索一個必需的設置。如果所需的設置爲NULL,我會在系統設置中查找所需的默認設置。

我很感謝在這方面的任何建議/模式。

回答

1

這裏可以做很多事情。這取決於你的實際設計和目標。形成行爲點的一種可能的解決方案是State design pattern,因爲它在狀態更改時會改變對象的行爲。我目前使用它來保持

默認爲孩子和可重寫

取決於形成,目前正在經歷的國家。如果你想加載相應的集合,我認爲這是一個很好的解決方案。

但是如果你需要在數據庫中

Abstract factory使用創力辦法,

店的設置是一條路可走。它將允許您創建幾個類族的實例,並將提供一個接口來創建相關或依賴對象的族,而不指定它們的具體類(因此您可以實現覆蓋)。

Composite將幫助您創建簡單和複合對象的樹狀結構,並表示此部分 - 整體層次結構。 Composite讓客戶可以統一處理單個對象和對象組合。

我知道這是抽象的解決方案,但概念可以完成正確的工作。