0

航空券を検索するためのクライアント アプリケーションを開発しています。サーバーからの検索結果を含む JSON を取得しました。この結果をクライアントに表現する必要があります。

FareAirlineCompanyおよびAviaTicketSearchResultオブジェクトがあるとします。AviaTicketSearchResultオブジェクトのリストを含める必要がありAirlineCompanyます。それぞれに sAirlineCompanyが含まれている必要がありますFare。そして、AviaTicketSearchResultAirlineCompanyは Aggregate ルートだと思います。カスケーディング削除のルールがあるため、削除するAirlineCompanyと、airlineCompany のすべての運賃を と同じように削除するのが理にかなっていAviaTicketSearchResultます。

Fare1)集約ルート ( ) 内に のリストを含めても問題ありAirlineCompanyませんか?

もう 1 つの問題は、Fares inside のフィルター機能を持たなければならないことAirlineCompanyです。各運賃には旅程があり、すべての旅程にはバリアント ( ItineraryVariant) (異なる区間、旅行など) のリストがあります。フィルターを受け入れたら、更新してAirlineCompany不要なFares を削除するか、ItineraryVariantconcrete 内の不要なを削除する必要がありFareます。

2) フィルタリング機能を適用する方法は?

運賃を VO として表現し、フィルターを適用するたびに生データ (json) から運賃オブジェクトを再作成し、フィルター処理された AirlineCompany で AviaTicketSearchResult を更新した後にそれを AirlineCompany に追加する必要があると想定しています。

4

2 に答える 2

4

ここでは、ドメイン駆動設計が適しているとは思いません。私が知る限り、UI 用のいくつかの DTO とそれらをフィルタリングする手段について話しているだけです。

ドメイン駆動設計は、複雑な動作を把握 (およびモデル化) しようとするときに役立ちます。ビュー モデルまたは DTO は、できるだけ単純にする必要があります。ほとんどの場合、高度で時間のかかるモデリング作業は必要ありません。

または、Eric Evans が言うように:

コアドメインにフォーカス

于 2012-12-20T11:33:59.260 に答える
1

1) 集計ルート (AirlineCompany) 内に運賃のリストを含めることはできますか?

はい、特に AirlineCompany が実際に集計ルートである場合は、その可能性があります。あなたの質問から、問題のドメインについてもっと学ぶことで利益が得られるかもしれないと思います。AirlineCompany は本当に集約ルートである必要がありますか、それとも顧客の単なる名前ですか? おそらく、Fare は実際には集計ルートであり、AirlineCompany は Fare の単なる文字列プロパティである必要があります。モデル化しすぎないように注意し、問題のドメインに注目してください。あなたの顧客が航空券を購入している場合、運賃や旅程と同じくらい AirlineCompany に重点を置いているとは思えません。問題のドメインをモデル化するとき、JSON や VO などは一時的に忘れる必要があります。

2) フィルタリング機能を適用する方法は?

フィルター パラメーターに基づいて結果をフィルター処理するのは、リポジトリまたはドメイン サービスの責任です。これの実装はあなた次第です。ただし、一般に、クライアントがサーバーと通信している場合、サーバーはリポジトリ アプリケーション コードを実行し、実装によってはそれを db サーバーに渡すことができるため、可能な限り最高のパフォーマンスを実現できるため、周囲の無関係なデータ。

于 2012-12-20T15:51:06.593 に答える