У меня есть контроллер, методы которого привязаны к кнопкам, которые выполняют разные процессы для одного набора данных, но он медленно растет. Даже метод отправки файла не всегда вызывается для каждой коллекции данных. Иногда требуется только 1 из 3, но мы хотим, чтобы у каждого формата файла была своя кнопка на клиенте.
public AController(
ILogger logger,
IabcRepository abcRepo,
IFileService<FileTypeA> fileTypeAService,
IFileService<FileTypeB> fileTypeBService,
IFileService<FileTypeC> fileTypeCService,
IPrintService printFileService,
....
)
public ActionResult SendFileA(int id)
{
_fileTypeAService.SendFile(id);
_abcRepo.Update(id)
_logger.Log("log message");
}
public ActionResult SendFileB(id)
{
_fileTypeBService.SendFile(id);
_abcRepo.Update(id)
_logger.Log("log message");
}
public ActionResult SendFileC(int id)
{
_fileTypeCService.SendFile(id);
_abcRepo.Update(id)
_logger.Log("log message");
}
public ActionResult PrintFileC(int id)
{
_printFileService.PrintFile(id);
_abcRepo.Update(id)
_logger.Log("log message");
}
Все эти методы вызываются подряд предыдущего метода и позволяют пользователю нажимать на кнопку только в том случае, если предыдущий метод успешно работал.
Типы файлов A, B и C отформатированы по-разному, и распечатанный файл не является ни одним из этих файлов.
Нуждается ли в этом рефакторинг, и как лучше всего это сделать?