我正在開發搜索機票的客戶端應用程序。我從服務器獲得了一個帶搜索結果的JSON,我應該將這個結果表達給客戶端。DDD:可以包含聚合根內部的實體列表
假設我有一個Fare
,AirlineCompany
和AviaTicketSearchResult
的對象。 AviaTicketSearchResult
應該包含AirlineCompany
對象的列表。每個AirlineCompany
應該包含Fare
s。我猜AviaTicketSearchResult
和AirlineCompany
是一個聚合根,因爲我有層疊刪除的規則,當我刪除AirlineCompany
時,刪除所有與AviaTicketSearchResult
相同的航空公司票價是有意義的。
1)在聚合根(AirlineCompany
)內包含Fare
s列表可以嗎?
另一個問題是我應該在AirlineCompany
內有Fare
的篩選功能。每個票價都有一個行程,每個行程都有一個變種列表(ItineraryVariant
)(不同的腿,旅行等)。當我接受過濾器時,我應更新我的AirlineCompany
並刪除不必要的Fare
s或刪除不必要的ItineraryVariant
混凝土Fare
。
2)如何應用過濾能力?
我假設我應該將票價表示爲VO,並且每次應用過濾器時都會從原始數據(json)重新創建票價對象,然後在將所有AviaTicketSearchResult更新爲已過濾的AirlineCompany後將其添加到AirlineCompany。
我已經用服務層包裝了我的域模型,UI有對ServiceFacade的引用,它將DTO對象返回給UI。 – tikhop
而這個任務只是複雜應用的一部分。顯示結果後,用戶應選擇具體票價並創建具有選定票價的訂單。 – tikhop
@tikhop當您聲明這是複雜應用程序的一部分,DDD可能應用於應用程序的其他部分,特別是可處理訂單創建的部分。然而,這個特定部分不涉及總量和VO。你有可能對應於聚集的DTO,但它們本身不是聚集的。因此,您可以以最能代表數據的方式構建DTO - 只是基本的OOP。您不必擔心一致性邊界,持久性等問題。 – eulerfx