Я работаю над очень большим проектом, уровень обслуживания которого в настоящее время организован во многих классах сервисов, которые содержат операции CRUD для каждого объекта базы данных. Например, для объекта «Продукт», мы имеем:Должен ли я организовывать свой сервисный уровень Entity Framework в частичных классах?
public class ProductService
{
public bool AddProduct(Product product)
{
// code omitted
}
public bool DeleteProduct(Guid productId)
{
// code omitted
}
}
И для объекта «Пользователь»:
public class UserService
{
public bool AddUser(User user)
{
// code omitted
}
public bool DeleteUser(Guid userId)
{
// code omitted
}
}
Теперь, представьте себе иметь десятки сущностей, как это, все со своими собственными Сервисы. Каждый раз, когда вы хотите, чтобы управлять ими, вы должны инстанцировать все необходимые услуги, так что ваш код будет всегда начинаться с чем-то вроде этого:
var productService = new ProductService();
var userService = new userService();
productService.AddProduct();
userService.AddUser();
Ко мне, это выглядит ненужным средство грязный, поэтому я подумал: почему бы не иметь только один класс, содержащий все методы обслуживания, возможно, разделенные частичными классами, чтобы сохранить его организованным? Результат будет выглядеть так:
public partial class MyService
{
public bool AddProduct(Product product)
{
// code omitted
}
public bool DeleteProduct(Guid productId)
{
// code omitted
}
}
public partial class MyService
{
public bool AddUser(User user)
{
// code omitted
}
public bool DeleteUser(Guid userId)
{
// code omitted
}
}
И использование:
var service = new MyService();
service.AddProduct();
service.AddUser();
Видите ли вы недостаток с таким подходом? Есть ли причина, почему я не должен этого делать?
Во-первых, это, прежде всего, мнение, основанное на том, что это вне темы для SO. Во-вторых, мое мнение таково: не делайте этого, держите их отдельно, так как ваше предложение нарушает принцип единой ответственности (https://en.wikipedia.org/wiki/Single_responsibility_principle). – DavidG