特定のドメインに対応する文字列パーサーは、ユーティリティまたはドメイン/値オブジェクトと見なす必要がありますか?dddでの特定の機能の設計
例:ユーザーが金融商品の検索リクエストを送信します。たとえば、「OMX KRエクイティ」このような文字列をプロバイダに送信するには、解析してその正確な値(楽器名、市場コード、楽器の種類)にマッピングする必要があります。検索要求ファイルの構造は機器の種類によって異なるため、文字列が解析された後で、機器のタイプをデータベースの既存のタイプと照合する必要があります。存在しない場合、検索要求を提出することはできず、ユーザーはそれに応じて応答を受け取る必要があります。
(ユーザーが検索リクエストを送信すると、アプリケーションがリクエストファイルを生成してFTP経由で外部プロバイダに検索リクエストを送信します)時間リクエストが満たされてからフェッチされてからFTPに保存され、データベースに保存されるので、検索要求に対して即座に応答はありません。)
このロジックを配置する適切な場所を見つけることはできません。通常、SearchRequestエンティティ内の値オブジェクトですが、データベースに対して検証する必要があるため、問題が発生します。
また、静的なソリューションの導入を避けようとしています。なぜなら、テストが難しくなると思われるからです。特にドメインロジックとみなされている場合は、ユーティリティ、ヘルパーなどの静的メソッドに属するべきだとは思わない。
dddによると、この問題を解決する正しい方法は何でしょうか?
通常、検索でドメインモデルが変更されないため、計測器のタイプを検証する必要がありますか? "Validate"は、 "この楽器がサポートされていない場合は何か他のことをする"という奇妙な方法です。 – VoiceOfUnreason
詳細情報を含む質問を更新しました – DasBoot
検索クエリの形式は、すべての検索プロバイダーの制約になりますか(それ以上の場合)、または現在のプロバイダー固有のものですか?おそらく、 'ISearchProvider {List validateQuery(String searchQuery)、...}'のようなインターフェースを持ち、それをインフラストラクチャに実装しています。 'ISearchProvider'と' SearchQueryError'は、ドメインやアプリケーションサービス層で定義することができます(どこが最適かはわかりません)。 –
plalx