Наличие фабрики здесь похоже на запах кода, и, на мой взгляд, на инжиниринг.
Ссылка Абстрактные фабрики - это запах кода
Ссылка на фабрику статически создает жесткая связь, которая может привести к нежелательным результатам при попытке провести модульное тестирование в изоляции. Класс также не является подлинным в отношении того, что ему нужно для выполнения своей разработанной функции.
Ссылка Принцип явных зависимостей
Создание модели с целью сохранения, где нет никакого удара или отрицательного эффекта от простого создания экземпляра и заполнения его членов, действительно не нуждающихся в дополнительной сложности фабричной абстракции.
public void UsersInCompany() {
List<User> UsersInCompany = new List<User>();
foreach (var userDB in UsersFromDataBase) {
User user = new User() {
Name = userDB.Name,
SecondName = userDB.SecondName,
//...
};
UsersInCompany.Add(user);
}
}
Существуют также такие службы, как Automapper это может быть использовано для упрощения процесса
public class UsersService {
private readonly IMapper mapper;
public UsersService(IMapper mapper) {
this.mapper = mapper
}
public List<User> UsersInCompany() {
List<User> UsersInCompany = new List<User>();
foreach (var userDB in UsersFromDataBase) {
User user = mapper.Map<User>(userDb);
UsersInCompany.Add(user);
}
return UsersInCompany;
}
}
IUser
также представляется абстракцией модели данных, что может указывать на неправильное понимание принципов, но поскольку вопрос является упрощенным примером, Я могу быть исправлен, если ситуация намного сложнее, чем было указано вначале.