Clean Architecture Guide
Arquitetura são as práticas e fundamentos de como organizamos um sistema. Tem relação e como os componentes estão relacionados entre em si e também nos requisitos de negócio de nossa aplicação. Auxilia na evolução do software, pois ajuda a manter o código limpo e organizado. Também estão relacionados com arquitetura os seguintes Requisitos não funcionais:
- Performance
- Escalabilidade
- Disponibilidade
- Confiabilidade
- Segurança
- Manutenibilidade
- Extensibilidade (adicionar novas funcionalidades)
Clean Architecture é uma arquitetura de software que visa resolver os problemas de maneira organizada e eficiente. Facilita a isolar o código de domínio da aplicação.
Principais vantagens observadas no uso de Clean Architecture:
- Isolar o código de domínio da aplicação
- Inversão de dependências
- Favorece boas práticas de Orientação a Objetos
- Código de domínio com alta "testabilidade"
- Independência de frameworks e detalhes de infraestrutura
Factories
Parecido com o padrão de projeto Factory Method, ou o padrão Builder. É uma classe responsável por criar um objeto (no caso do tipo Aluno);
Domínio
É o coração do negócio, onde estão as regras da nossa aplicação.
Domain Driven Design: Conceito de modelar a aplicação pensando inicialmente no domínio. Facilitando assim as alterações realizadas nas "bordas" da aplicação, por exemplo, facilitar a alteração na forma como interagimos com o sistema, sendo por API, linha de comando ou etc.
Repositório
Termo utilizado para falar sobre persistência de dados. Utilizando esta abordagem isolamos o domínio da infraestrutura.
Serviço
Representar uma classe que executa alguma ação que não pertence a nenhuma Entidade ou Value Object.
Projeto
Exemplos desenvolvidos no projeto School neste repositório.
Fontes
- Clean Architecture - Alura
- Descubra o que é e onde aplicar Arquitetura Limpa - ZUP
- Value Object
- Screaming Architecture
- Livro: Arquitetura limpa
Developed by Jean Jacques