Skip to content

schmidt-marcelo/poc_clean_architecture

Repository files navigation

POC Clean Architecture

Contexto

Como pessoas profissionais desenvolvedoras de software, econtramos uma estrutura de camadas na maioria das aplicações que trabalhamos. A camada superior chamamos de view, presenter ou qualquer coisa que seja similar a isso. Generalizando, vou chamar de camada de apresentação.

Logo abaixo da camada de apresentação está a camada onde colocamos as regras de negócio, e chamamos de business, service ou coisa parecida.

A última camada é a de acesso às fontes de dados, geralmente bases de dados em SGBDs, comumente chamada de dal ou dao.

Entre essas camadas transita uma estrutura de dados comum, um "objeto" com seus atributos e modos de acesso.

Arquitetura de camadas

Esta estrutura não reforça o encapsulamento. Pelo contrário, quebra o encapsulamento. Temos dados(DTO) e as ações sobre os dados(camadas) em estruturas diferentes. Assim, é comum que algumas funcionalidades estejam repetidas por toda a aplicação que lida com esses DTOs. Este modelo também é conhecido como modelo anêmico.

Arquitetura Limpa

Também conhecido como Onion Architecture, Hexagonal Architecture ou Ports and Adapters, a ideia aqui é isolar os componentes críticos do sistema em seu núcleo. O modelo abaixo demonstra melhor a ideia.

Arquitetura Limpa

Aqui promovemos o uso de Single Responsibility Principle, que estabelece que componentes de software devem atender a um e somente um ator. No modelo anterior, os casos de uso e as entidades atendem às pessoas de negócio, pois contém os processos pertinentes ao negócio. O anel exterior atende às pessoas de tecnologia, pois é aí que estão os vínculos principais com bibliotecas, ferramentas, frameworks e etc.

Portanto, nas camadas de casos de uso e entidades, não pode haver nada de contexto de tecnologia, em outras palavras, o bom e velho java (nesse exemplo), sem anotações de frameworks de persistência ou de comunicação externa. O contrário deve ser dito do anel exterior, onde o foco são as tecnologias, e não deve conter nenhuma regra de negócio (a não ser orquestração de funcionalidades).

About

Um template para quem está interessado em aprender sobre clean architecture na plataforma Java.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages