Witam, Uczę się właśnie architektury opartej na wzorcu mediator. Korzystam w tym wypadku z biblioteki MediatR. Chciałbym was się spytać, czy koncepcja polegająca na rozdzielaniu każdej operacji na oddzielny handler jest dobrym pomysłem. Poniżej wklejam screen pokazujący jaki jest mniej więcej poziom rozdzielenia.
Czy takie rozbijanie jest ok? Jeśli coś jest waszym zdaniem krytycznym błędem jaki stosuję?
Poniżej są przykłady implementacji kilku handlerów
RegisterUserHandler:
public class RegisterUserHandler : IRequestHandler<RegisterUserCommand, RegisterUserResponse>
{
private readonly UserService _userService;
public RegisterUserHandler(UserService userService)
{
_userService = userService;
}
public Task<RegisterUserResponse> Handle(RegisterUserCommand request, CancellationToken cancellationToken)
{
bool registerSucceded = _userService.Register(request.createUserDTO, out Dictionary<string, string> registerErrors);
return Task.FromResult(new RegisterUserResponse { RegisterErrors = registerErrors, RegisterSucceded = registerSucceded });
}
}
GetResidentialObjectTypesHandler:
public class GetResidentialObjectTypesHandler : IRequestHandler<GetResidentialObjectTypesCommand, List<string>>
{
public Task<List<string>> Handle(GetResidentialObjectTypesCommand request, CancellationToken cancellationToken)
{
if (request.Type == Commands.ResidentialObjectCommands.Type.MainTypes)
return Task.FromResult(ResidentialObjectTypes.GetAllMainTypes());
else if (request.Type == Commands.ResidentialObjectCommands.Type.Subtypes)
return Task.FromResult(string.IsNullOrEmpty(request.MainTypeName) ? ResidentialObjectTypes.GetAllSubtypes() : ResidentialObjectTypes.GetSubtypesForType(request.MainTypeName));
else
return Task.FromResult(new List<string>());
}
}
- handlers_mediatr.PNG (35 KB) - ściągnięć: 14