问题很简单。您应该为所有 CRUD 操作创建一个接口,还是应该为每种类型的操作保留一个接口?
总共有 4 个接口(创建、读取、更新、删除),每个接口有 4 个类。或者创建一个包含所有CRUD操作的接口,以及一个实现所有这些接口的类(这些类中总共有13个方法),这不是与ISP相矛盾吗?
现在我把它排列成这样(如果屏幕截图不合适,我很抱歉):
这就是它在依赖容器中的位置:
builder.Services.AddScoped<ICreateUser, CreateUser>();
builder.Services.AddScoped<IDeleteUser, DeleteUser>();
builder.Services.AddScoped<IReadUser, ReadUser>();
builder.Services.AddScoped<IUpdateUser, UpdateUser>();
PS如果我没有指出什么,请指出具体是什么;没有必要立即否决它。


对于CRUD或者其他操作分离接口的原则在于对原理的理解。出于必要,您将接口分开,并且当存根方法出现时,即出现分离的需要。如果您不打算实现一个或另一个接口方法。在你的情况下,如果 CRUD 实现不包含读取,那么你可以将其划分,但我什至不会将其与 CQRS 实现划分,因为没有什么可以阻止我通过 Facade 模式实现它。