工厂应返回元素列表

本文关键字:列表 元素 返回 工厂 | 更新日期: 2023-09-27 18:22:19

我正在尝试使用DDD,并且我有创建某种实体的需求。此方法的接口类似于以下内容:

public IEnumerable<Entity> CreateEntities(IEnumerable<Entity> entities, decimal someOtherParameter);

需要注意的一点是,在这个方法中,entities上有一个group by。

我现在拥有的一个简化的例子:

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保持为私有(在创建新实体时,我总是需要按部分进行分组)

工厂应返回元素列表

工厂不一定是一个新的类。通常,另一个聚合负责创建新的实体或聚合。你的语言说什么?例如CCD_ 3。