只是想獲得有關如何處理實體配置細節的羣體想法。DDD中的應用程序級別設置?
我在想特別是高層設置,可能是admin-changed。最終可能存儲在應用程序或web.config中的那種東西,但是從DDD角度來看,應該明確地在對象中的某處設置。
爲了說明問題,我們舉一個基於web的CMS或博客應用程序爲例。
一個給定的博客條目實體有任何數量的情況下設置,如作者,內容等
但你也可能需要設置(例如)默認說明或站點中的所有條目應該開始關鍵詞如果他們沒有被作者改變。當然,你可以在課堂上做這些常量,但是網站所有者不能改變默認值。
所以我的想法如下:
1)使用類級(靜態)屬性來表示這些設置,然後將它們當應用程序啓動時,無論是從數據庫或Web設置它們的.config。
或
2)使用一個單獨的實體持有的設置,可能是一本字典,無論是直接使用還是有它是入門級
什麼打你所有的最容易的一員/靈活?我關心的第一個問題是,它不會讓我覺得可插拔(如果我最終希望添加更多功能),因爲更改實體的類方法也會使我改變應用程序本身(這感覺就像是OCP違規)。然而,第二個人覺得它更重,特別是如果我必須從字典中輸出或解析數值的話。
默認值是一個例子,也許是一個很差的例子;我熟悉工廠模式。 另一個例子是應該應用於所有類的實例,但可以在應用程序級別更改。也許像加載到列表中的實例的數量(總是)或關於是否顯示註釋的規則。這些不是真的讓我成爲實例級的價值,還是我誤解了某些東西? – Paul 2009-11-24 16:43:33
您總是可以將一個或多個相關值封裝到一個類型中,然後將該類型的一個實例注入到所有使用者中。出於效率原因(或任何其他原因),您可以選擇注入單個共享實例,而消費者不知道注入對象的生命週期。這會讓你的選擇保持開放。 – 2009-11-24 20:15:40