的字符串解析器coresponds到特定域應當被認爲是一個實用程序或結構域/值對象?設計特定特徵在DDD
實施例:用戶提交的金融工具的搜索請求。例如「OMX KR股票」。爲了將這種字符串提交給提供者,必須對其進行解析並將其映射到其確切值(工具名稱,市場代碼,工具類型)。搜索請求文件結構取決於儀器類型,因此在解析字符串後,必須根據數據庫中的現有類型檢查儀器類型。如果不存在,則不能提交搜索請求,並且用戶必須相應地收到響應。
(與您預期的有點不同,用戶提交搜索請求,應用程序通過生成請求文件通過FTP向外部提供者提交搜索請求,經過一段時間請求得到滿足並從並且保存到數據庫中,所以沒有立即迴應搜索請求。)
我無法找到合適的位置來放置此邏輯。通常它可能是SearchRequest實體內的值對象,但是需要根據數據庫進行驗證會引發問題。
而且我試圖避免引入靜態的解決方案,因爲我懷疑它使測試更加困難。尤其是如果它被認爲是域的邏輯,我不認爲它應該屬於一個靜態方法作爲一種實用工具,輔助性或者等
什麼會根據DDD解決這個問題的正確方式?
搜索通常不會修改域模型,那麼爲什麼您需要驗證儀器類型? 「驗證」是一種奇怪的方式來拼寫「如果不支持此工具,請執行其他操作」。 – VoiceOfUnreason
用更多的信息更新了這個問題 – DasBoot
搜索查詢格式是所有搜索提供者的一個約束(假設會有更多的)或者它是特定於當前提供者的嗎?我可能有一個接口,比如'ISearchProvider {List validateQuery(String searchQuery),...}'並在基礎結構中實現它。可以在域或應用程序服務層中定義「ISearchProvider」和「SearchQueryError」(不確定哪裏最好)。 –
plalx