Sobes.tech
Middle

Por que cada camada arquitetônica é necessária numa aplicação?

sobes.tech IA

Resposta da IA

As camadas arquitetónicas ajudam a dividir responsabilidades, melhorar a manutenção e a testabilidade da aplicação.

  • Camada de Apresentação: Responsável por exibir a interface do utilizador e interagir com ela. Recebe dados da Camada de Domínio e os transforma para apresentação. Envia ações do utilizador para a Camada de Domínio.
  • Camada de Domínio: Contém a lógica de negócio da aplicação. É independente da UI e dos detalhes de infraestrutura. Inclui entidades, casos de uso e repositórios na forma de interfaces.
    • Entidades: Representam os principais objetos de negócio.
    • Casos de Uso (Interactors): Definem os cenários de interação com a aplicação. Orquestram o trabalho dos repositórios e entidades para realizar tarefas específicas.
    • Repositórios (Interfaces): Definem os contratos para obter e guardar dados. A implementação encontra-se na Camada de Dados.
  • Camada de Dados: Responsável por obter e guardar dados. Inclui implementações de repositórios, fontes de dados e modelos de dados.
    • Implementações de Repositórios: Implementam as interfaces de repositórios definidas na Camada de Domínio.
    • Fontes de Dados: Proporcionam acesso a diferentes fontes de dados (API, base de dados local, preferências partilhadas, etc.).
    • Modelos (DTOs): Representam o formato de dados utilizado para comunicar com as fontes de dados, diferenciando-se das entidades na Camada de Domínio.

Exemplo de estrutura de camadas:

lib/
├── main.dart
├── apresentação/
│   ├── widgets/
│   ├── páginas/
│   ├── blocos/  // ou outros gerenciadores de estado
├── domínio/
│   ├── entidades/
│   ├── casosdeuso/
│   ├── repositórios/
├── dados/
│   ├── repositórios/
│   ├── fontesdedados/
│   ├── modelos/

Esquema de dependências:

Camada de Apresentação -> Camada de Domínio <- Camada de Dados. (Dados e Apresentação dependem de Domínio, mas Domínio não depende de ninguém).