我正在研究一個UML類模型和(基本是這樣)我覺得我需要看看我的假設是否正確。我有兩種類型:管理員和位置。 (管理員可以在一個或多個位置的兩者之間存在關係)。簡單的OO問題:哪些類應該擁有此操作?
管理員需要將自己分配給一個位置。這個賦值操作應該是位置類型還是管理員類型?一個人的理由是什麼?
我正在研究一個UML類模型和(基本是這樣)我覺得我需要看看我的假設是否正確。我有兩種類型:管理員和位置。 (管理員可以在一個或多個位置的兩者之間存在關係)。簡單的OO問題:哪些類應該擁有此操作?
管理員需要將自己分配給一個位置。這個賦值操作應該是位置類型還是管理員類型?一個人的理由是什麼?
非常好描述都可能和論證,都可能也很好。
如果管理員在主服務器上登錄,他可以調用AdminUtils.Locations(That).AddAdministrator(Me)
。另一方面,如果管理員在特定位置,他可以在登錄該位置之前調用AdminUtils.Administrators(Me).AddLocation(This)
。
這些類型的問題是針對具體情況通常考慮責任的回答。哪個實體負責哪些實體?
另請注意,這些添加方法可能完全是兩個實體的元素,但其中一個映射到應該只是一個的實際存儲。
正如我所看到的,管理員將是具有狀態的班級,因此知道他在哪裏。該位置是一個數據輸入,應該是無狀態的。
因此,它是您要添加或刪除位置的管理員。
即,典型的C#:
Administrator.Locations.Add
Administrator.Locations.Remove
而且,我看不出它如何能在位置類型,沒有你使用的雙向關係,這似乎並不適用於本案。
這取決於你的軟件是什麼。如果是關於人員的數據庫,則管理員將包含指定地點的列表(addLocation/removeLocation),如果是關於地點的地方,則Location應該引用其管理員(setAdministrator)。如果你跟蹤任務的歷史,那麼明顯的分配將是一個單獨的實體。 這樣的事情在DDD Book埃裏克埃文斯
謝謝克勞斯,所以當決定方法應該去哪裏時,你會說狀態是關鍵嗎? – proggrock
但是,如果您想知道某個位置有哪些管理員,則需要查看所有管理員及其所有位置記錄...... –