1

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 を非公開のままにします (新しいエンティティを作成するときは、常にパーツごとにグループ化する必要があります)。
4

1 に答える 1

1

ファクトリは必ずしも新しいクラスである必要はありません。多くの場合、別の集約が新しいエンティティまたは集約の作成を担当します。あなたの言語は何と言っていますか?たとえばvar post = forum.NewPost(user)

于 2013-07-15T00:01:22.190 に答える