You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Olá, Moacir!
Primeiramente, peço mil desculpas pela demora. Fiquei envolvido com alguns projetos no último mês que exigiram um pouco do meu tempo.
Em segundo lugar, parabéns por essa observação! Não escapou nada. Você está certo.
Quando eu estudei sobre Clean Architecture, também fiquei um pouco perplexo com o fato de DB depender da camada de Gateway. Porém, ao avaliarmos melhor, a camada de entidades (entities), que fica bem no topo do cone, precisa de uma conexão com o banco de dados para recuperar ou persistir dados. Como a camada de BD não se comunica com a camada de entidades, a solução que elaborei compreende em "injetar" uma instância da conexão com o BD que "sobe" no cone, ou que "entra" nas camadas, no caso da imagem em círculo.
No entanto, fiquei um bom tempo pensando na resposta da sua issue e cheguei à conclusão de que o nome da Interface que eu utilizei possivelmente não ficou apropriada. Ao invés de IDBConnection, talvez o ideal seria IRepository, principalmente por 2 motivos:
Remover essa interpretação de que o Gateway depende de BD;
Esclarecer que o Gateway não trabalha exclusivamente com banco de dados. O repositório pode ser uma API, WebService, arquivos ou inclusive Mocks, no caso de testes unitários.
Mesmo assim, Moacir, gostaria de destacar que (ainda) não li o livro inteiro. Talvez uma explicação mais assertiva dessas dependências esteja em uma parte específica do livro. Quando eu finalizar minha leitura, se necessário, faço ajustes no projeto e atualizo a minha resposta nessa issue.
A imagem Clean-Architecture-Cone.jpg sugere que DB depende de Gateway.
No entanto, TDepositoGateway em Gateway.Deposito recebe IDBConnection no Create o que o torna dependente desta interface
Tem algo que me escapou ai?
P.S. Parabéns pelo excelente contéudo!
The text was updated successfully, but these errors were encountered: