1
我正在嘗試使用DDD,並且我有創建某種實體的要求。此方法的接口與當前類似的東西:工廠應該返回元素列表嗎?
public IEnumerable<Entity> CreateEntities(IEnumerable<Entity> entities, decimal someOtherParameter);
一個注意的事情是,這個方法裏面有一個組通過對entities
。
什麼我現在有一個簡化(通過多)例如:
public IEnumerable<Entity> CreateEntities(IEnumerable<Entity> entities, decimal someOtherParameter)
{
var grouped = entities.GroupBy(x=>x.SomeProperty);
var result = new List<Entity>();
foreach(var item in grouped)
{
result.Add(CreateEntity(item, someOtherParameter));
}
return result;
}
public Entity CreateSingleEntity(IEnumerable<Entity> entities, decimal something)
{
return new Entity(){
something = something,
something2 = entities.Sum(x=>x.Amount),
something3 = entities.First().something3
};
}
以前我有這個方法爲靜態的Entity
類。 (返回單個實體的人是私人的)我正在考慮將這個邏輯轉移到工廠。什麼是實現這一目標的最佳方式?我的想法:
- 有工廠CreateSingleEntity方法,而另一個 將在域名服務。
- 移動這兩個方法來工廠,並保持CreateSingleEntity爲私有(我總是需要的一部分,當IM創造新的實體做組)
我沒有aggreagate根,可能是「論壇」你提到。我只有用例。使用你的論壇的例子,這個過程可以描述如下:用戶選擇一些帖子,然後,使用選擇的帖子,系統爲原始帖子的每個作者創建一個新的單一帖子,其中包含所有的內容的職位。 – Botis
所以你克隆/複製帖子?這是你的企業使用的語言嗎? 'yourAggregate.Copy()?' – JefClaes
相當於將聚合列表聚合爲一個新聚合。看看我的例子 - 有像list.Sum(x> x.Amount)等等。 – Botis