【发布时间】:2013-07-14 09:30:25
【问题描述】:
我正在尝试使用 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 保持为私有(当我创建新实体时,我总是需要按部分进行分组)
【问题讨论】:
标签: c# oop domain-driven-design factory