Simple Clean Architecture
Como podemos descomplicar ?
Com uma visão de arquitetura mais simplista, seguindo todos os bons conceitos, principalmente a de manter o isolamento total do core, mas com uma única camada externa para a aplicação, simulando uma divisão modular fisicamente por packages com config, entrypoint e dataprovider.
Para exemplificar um pouco mais o modelo baseado na Clean Architecture e Ports and Adapters, segue uma ilustração para visualização das dependências de cada camada e as ligações com seus componentes, deixando bem claro suas responsabilidades.
Nota: Observa-se que no diagrama de classe mostrado foi inserido nas classes que implementam as interfaces a notação @javax.inject.Named, essa notação para quem não a conhece, ou utiliza outra linguagem, é uma notação da especificação de injeção de dependência do Java (JSR-330). Ela é utilizada como dependência no core para que o mesmo não possua nenhuma dependência direta de Framework, assim contendo apenas o trivial, como especificações. Em aplicações Java utilizando o Spring Framework, essa notação permite que nossa aplicação configure a injeção de dependência de forma automática, basta inserir o package que deseja escanear na propriedade scanBasePackages da notação @SpringBootApplication de sua classe principal e se o package do seu core for o mesmo de sua application, nada precisa ser feito (realmente mágico).

Comentários
Postar um comentário