Olá leitor!
Antes, examinamos como o ciclo
VIP é organizado e como fazer transições entre preços e transferência de dados. Agora você precisa descobrir como descarregar nosso
Interactor de uma superabundância de lógica e retirá-lo para reutilização em outras cenas. E os
trabalhadores nos ajudarão com isso. O tópico é bastante modesto em volume, mas importante para menção.

Teoria
Trabalhadores são classes / estruturas auxiliares (que não devem ser confundidas com serviços ou ajudantes) cuja tarefa é assumir parte da lógica de negócios do
Interactor . Se os métodos no
Interactor estão se expandindo, é hora de remover a lógica volumosa no
Worker . No
Clean Swift, eles são usados para trabalhar com a lógica do armazenamento de dados, com a rede, com camadas individuais do aplicativo e assim por diante. Em outras palavras, tudo é volumoso, de baixo nível e não está relacionado à lógica de negócios do aplicativo.
Os trabalhadores são divididos em dois tipos principais:
- Local usado apenas dentro da cena.
- Global que estão disponíveis para qualquer cena.
Trabalhadores locais são colocados diretamente dentro da cena e recebem o nome dela -
SceneNameWorker . Os
Trabalhadores Globais estão localizados no diretório raiz dos
Trabalhadores e são nomeados de
acordo com o assunto.
Trabalhadores locais também podem atuar como “decoradores em todo o mundo”, com lógica estendida para as necessidades da cena.
Se você usar a separação do projeto em camadas (
apresentação ,
lógica de negócios ,
persistência ,
lógica de rede ), a função da ponte de conexão entre a camada de
apresentação e a
lógica de negócios poderá ser
atribuída aos
trabalhadores . Assim, descarregaremos o
Interactor , obteremos um comportamento mais previsível e a facilidade de reutilização.
Prática
O trabalho dos
Trabalhadores que consideraremos no exemplo de trabalho com a rede. Teremos duas telas - na primeira é exibida uma lista de usuários e, na segunda, uma lista de postagens desse usuário. Todos os dados serão coletados pela
API . Dividiremos essa tarefa em três
trabalhadores , dois locais e um global, que atuarão como um ponto de entrada para os outros dois. Esconderei a implementação dos métodos em si no artigo, e quem quiser experimentar na prática, haverá um link para o projeto finalizado no final do artigo.
Essa estrutura do projeto não é uma referência para trabalhar com uma rede e não reflete de forma alguma como trabalhar com ela no Clean Swift . Tudo isso é feito apenas para um bom exemplo do papel dos Trabalhadores locais e globais.Para começar, crie um
Worker global -
NetworkWorker . Coloque-o no diretório
Trabalhadores , no mesmo nível que o diretório
Cenas . No exemplo abaixo, existe um
método sendRequest (para: params: conclusão) , que será comum aos
Trabalhadores locais. Ele executa uma tarefa de rotina - forma um link a partir dos parâmetros, envia uma solicitação e envia o resultado para
conclusão .
struct NetworkWorker {
Para a primeira cena, precisamos obter uma lista de
APIs de todos os usuários. Para isso, criamos um
HomeWorker local que irá configurar os parâmetros para carregar usuários e chamar
sendRequest (para: params: conclusão) no
NetworkWorker com esses parâmetros. Agora, no
Interactor da cena
, precisamos chamar
fetchUsers (conclusão :) e enviar os dados recebidos para processamento ao
Presenter .
Quando você clica em uma célula da tabela com o nome de usuário, faremos a transição e transferiremos o usuário selecionado para outra cena.
struct HomeWorker {
Na página com postagens de usuários, criamos
PostsWorker , mas apenas com o
método fetchPosts (userId: complete :) . Nele passamos o ID do usuário cujas postagens você deseja baixar. No método, formamos os parâmetros e chamamos
sendRequest (para: params: conclusão) no
NetworkWorker . E da mesma maneira que antes, chamamos o
método fetchPosts (userId: complete :) no
Interactor da cena, passando os dados recebidos para o
Presenter .
struct PostsWorker {
Agora toda a nossa implementação foi movida para arquivos separados que podem ser reutilizados, sem carregar a lógica de negócios no
Interactor .
Conclusão
Embora os
trabalhadores sejam muito simples e não revelem nenhum conhecimento oculto sobre arquitetura, seu uso é importante no
Clean Swift . Ao escrever
Trabalhadores , não esqueça de protocolos, padrões estruturais e DI. Caso contrário, você rapidamente formará uma confusão de
Trabalhadores , onde tudo o que poderia ser retirado foi retirado em pedaços.
Isso é tudo. Obrigado pela leitura até o final, abaixo está um link para o projeto completo.
Série de artigos
- Visão geral da arquitetura Clean Swift
- Roteador e transmissão de dados na arquitetura Clean Swift
- Trabalhadores da arquitetura Clean Swift (você está aqui)
- Teste de unidade na arquitetura Clean Swift
- Um exemplo de uma arquitetura simples de loja online Clean Swift
Link para o projetoAjuda para escrever um artigo:
Bastien