0
我正在設計一個系統。 ,它有一個非常靈活的結構來代表組織,這是非常重要的。設計系統組織結構表示
基本的要求很簡單:
- 有集裝箱的層次結構(組織單位)
- 容器將包含其它實體(包括其它容器),實體,如:
- 組可以包含用戶
- 日曆
- 等...
- 還有一個要求,以便根據結構的許可和註冊過程。
- Users \ Groups可以向其他容器註冊不同的角色和權限,並且將授予他們對所有其他實體具有相同角色的權限,還可以定義組和日曆的管理員。
初始想法:
- 使用 「複合」 設計模式來表示的實體:
- [[接口]] IEntity - > INT ID,字符串名稱...
- 每個實體將實現相同的接口
- 容器實體將持有將引用這些實體的子項列表。
- 每個實體都將持有一個「權限樹」,用於在葉子上保存用戶列表,該樹將表示用戶向實體註冊爲管理者的角色和方式。即,如果用戶是註冊爲通過一組一個所有者的樹將顯示:擁有者 - >組別1 - >用戶1.
沉思:
- 如果每個實體具有一個刪除\自己添加方法?在接口級定義,或者應該有一個不同的類某種「EntitiesManager」來處理添加編輯和刪除實體的所有任務。
- 我應該如何建模我的數據庫來保存許可樹信息?
我很樂意聽到關於該主題的任何想法,更正,經驗教訓或建議。
在此先感謝...
謝謝..只是爲了看看我的理解......你建議使用特定的實體類使用CRUD操作。所以如果我想添加另一個容器,它會看起來像這樣:MyContainer.Add(),並將他添加到數據庫。我以爲使用某種FACADE的域管理器類可以幫助我創建實體,例如DomainManager.AddEntity(theEntity,ParentEntity)。 – Mortalus 2012-08-14 19:37:52
是的。如果CRUD邏輯對於所有實體都是非常簡單的,那麼這種方法是最好的。但讓我們考慮一下當你有50個具有非常特定的CRUD邏輯的不同實體時。我不是說可以在數據庫級別上執行級聯刪除。我的意思是像'請爲這個新用戶創建默認權限集'。你的DomainManager類將被炸燬。另一方面,在實體的典型操作中,您將始終可以輕鬆訪問CRUD邏輯,而無需獲取DomainManager實例。 – 2012-08-15 05:12:04