Omu*_*Omu 3 domain-driven-design solid-principles
并据说我们为每个实体创建一个存储库(接口),然后我们创建一个RepositoryFactory,它将提供存储库的实例(声明为接口)
这是使用DDD完成项目的方式吗?
我的意思是,我看到我认为他们使用DDD但他们直接调用每个存储库的项目,没有涉及工厂
并且
为什么我们需要创建这么多的存储库类,为什么不使用类似的东西
public interface IRepository : IDisposable
{
T[] GetAll();
T[] GetAll(Expression<Func> filter);
T GetSingle(Expression<Func> filter);
T GetSingle(Expression<Func> filter, List<Expression<Func>> subSelectors);
void Delete(T entity);
void Add(T entity);
int SaveChanges();
}
Run Code Online (Sandbox Code Playgroud)
我想这可能是违反SOLID原则或其他原因的东西?
有很多不同的方法可以做到这一点.这样做并不是单一的"正确"方式.大多数人更喜欢每个实体的存储库,因为它允许他们以更细粒度的方式改变域服务.这绝对适合SOLID中的'S'.
对于工厂而言,只有在增加价值时才能使用它们.如果它们只是包装一个new
操作,它们就不会增加价值.
以下是工厂增加价值的一些场景: