DDD を使用しようとしていますが、ある種のエンティティを作成する必要があります。このメソッドのインターフェースは、次のようなものです。
public IEnumerable<Entity> CreateEntities(IEnumerable<Entity> entities, decimal someOtherParameter);
注意すべきことの 1 つは、このメソッド内に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 メソッドを持つファクトリがあり、もう 1 つはドメイン サービスにあります。
- 両方のメソッドをファクトリに移動し、CreateSingleEntity を非公開のままにします (新しいエンティティを作成するときは、常にパーツごとにグループ化する必要があります)。