Hej, jestem wciąż niestety przed zabraniem się porządnie naukę wzorców, choć już niebawem pojadę z koksem, i zastanawiam się czy poniższe rozwiązanie jest czymś praktykowanym?
Na przykład posiadam serwis, w którym posiadam blok kodu:
else
{
await _scrapService.ClickCheckbox(ClickerInput);
await _scrapService.ClickSome(ClickerInput);
}
następnie w _scrapService
robię coś takiego (żeby przeszedł przez serwis który się zajmuje zbieraniem danych):
public async Task ClickSome(bool clickerInput)
{
if (!clickerInput)
{
//not applicable yet <- może nigdy tego nie zrobię?
}
else
{
await _inputService.ClickSometAsync();
}
}
public async Task ClickCheckbox(bool clickerInput)
{
if (!clickerInput)
{
//not applicable yet <- może nigdy tego nie zrobię?
}
else
{
await _inputService.ClickCheckboxInputAsync();
}
}
żeby w końcu wykonać zadanie w _inputService
który się zajmuje symulowaniem kliknięcia:
public async Task ClickSomeInputAsync()
{
await MouseLeftButtonClick(236, 892);
}
public async Task ClickCheckboxInputAsync()
{
await MouseLeftButtonClick(83, 212);
}
A może po prostu na samym początku powinienem już wołać _inputService
? Choć wtedy muszę dodać nową zależność.
Albo inny przykład, gdzie z modelu widoku tak obsługuję komendę przycisku (w tym przypadku nie chciałem zaśmiecać VM):
public async Task OnBuildCommandAsync()
{
SearchPhrase = ShowDialog(viewModel => _dialogService.ShowDialog<PhraseView>(this, viewModel));
await _buttonService.ExecuteBuildButtonAsync(SearchPhrase);
}
żeby dopiero później w _buttonService
wykonać logikę:
public async Task ExecuteBuildButtonAsync(string searchPhrase)
{
string callerName = nameof(ExecuteBuildButtonAsync);
_logger.Info(MessagesInfo[callerName]); //log
try
{
if (!string.IsNullOrEmpty(searchPhrase))
{
await _fileService.SavePhraseAsync(searchPhrase); //file
_browseService.UpdateSearchPhrase(searchPhrase);
_logger.Info(MessagesResult[callerName] + searchPhrase); //log
}
else
{
throw new Exception("Incorrect phrase.");
}
}
catch (Exception e)
{
_logger.Error(MessagesError[callerName] + e.Message); //log
}
}
Czy wg Was się robi z tego masło maślane i powinienem rozwiązać logikę przycisku w VM?