(抱歉,如果標題是不恰當的,不知道如何正確字的問題)OOP基礎 - C#重構?
一個User
(人)擁有Property
(一所房子,街道地址等)。
我正在重構一個項目,並且有以下情況。我有一個名爲Property
的課程和一個名爲User
的課程。
業務規則:用戶具有一個或多個屬性。
那麼,什麼更有意義:
User.GetProperties()
或
Properties.Get(userId)
目前我通過User
訪問類的屬性。不知道這是否是處理這種關係的常用方式。你們是怎麼想的?
我想在這裏向前和關注的原因是因爲我稍後會:
Property.Get(state)
Property.Get(zip)
Property.Get(city)
Property.Get(numberOfBedroom)
等。 。
其他獲取房產的方法和我知道這些將通過Property
類訪問。對? (我對此堅定不移),這是否改變了如何訪問用戶的屬性?
更新
我不問如何正確地創建的類,就像我說我有兩個班。我的問題,更好地說,就是:
使我的網頁API,對於給定的情景(User
有一個或多個Property
[IES):
/api/user/properties/{userId} // get all user properties
或
api/property/user/{userId} // get all user properties
因爲我明確將實施:
api/property/zip/{zipCode} // get all properties by zip
api/property/state/{state} // get all properties by state
api/property/city/{city} // get all properties by city
等
因此,考慮到過去的3個例子,你會
(一)實施/api/user/properties/{userId}
同時實現所有api/property/...
爲後來3箱子
或
(b)保持一致並從api/property/user/...
的角度查詢User
的Property
[ies]?
然後,回答這個問題後,我仍然有User
類與GetProperties()
方法返回List<Property>
或
我可以有Property
類與GetByUser(int userId)
方法返回List<Property>
因爲在現實世界中User
有1個或更多Property
而不是相反。所以我們的基本OOP本能就是對它進行建模,但是當考慮WebApi和一個可能公開暴露的API時,我認爲後者是首選,但是從C#(服務器端)獲取User
的Propert
是什麼使得但我的前端開發人員(jQuery,Angular,JavaScript等)需要流暢的API,api/property/user/...
可能是合乎邏輯的,我可能不認爲要看api/user/propties/...
(或我可能)...
那麼,您將使用哪種API方法以及爲什麼,以及您將使用哪種類模型以及爲什麼。
謝謝。
更新2
(心裏對自己說)「答案可能是既」創建API的OOP正確性和api/property/user/...
兩種方式api/user/properties/...
了一口流利的API,並有兩個調用同一個類的方法?對?
有用的參考看來你的業務規則較爲複雜:有屬性描述符的列表,用戶可以擁有這些描述符的一個或多個屬性值。這是真的嗎? –
關閉袖口猜測 - 與跟蹤/識別用戶相比,您對追蹤/識別屬性更感興趣。在我看來,你的API應該是關於屬性,以及獲取你關心的屬性集合的各種方法,而不是關於用戶,ZIP或狀態。總之,我認爲api/properties/[屬性/ {[屬性值]}的某些屬性會產生一個相對乾淨,易於理解的格式。 –
更新,否「用戶(一個人)擁有一個房產(房子,街道地址等)。」 –