Em arquitetura de software, existe o modelo conceitual de três camadas:
1. Presentation Layer
2. Domain Layer
3. Data Source Layer

As três camadas servem como uma forma de criar um vocabulário e segmentar as responsabilidades de um sistema, afim de melhor compreende-lo e discutir sobre ele.

1. Presentation Layer

Se trata da camada que vai servir a aplicação para consumidores do mundo externo. Vamos tomar como exemplo o GitHub. Ele possui três camadas de apresentação: o próprio site, o GitHub CLI e o GitHub Desktop.
Idealmente, na camada de apresentação está toda lógica de interface. Essa camada não conhece regras de negócio ou de persistêcia. Ela se limita a despachar operações para a camada Domain, o que ocorre, no nosso exemplo, através de uma chamada HTTP para a API do GitHub.
Então, o GitHub CLI, Desktop e Web, são camadas de apresentação, que enviam comandos para a camada de Domain, via HTTP.

2. Domain Layer

É a parte mais central de um sistema. A camada de Domain é responsável por conectar a camada de Presentation a camada de Data Layer. Toda operação requisitada pela Presentation Layer, nunca deve ir diretamente para a Data Layer. A Presentation deve conhecer somente o Domain. No nosso exemplo, o GitHub Desktop deve conversar somente com a API HTTP, e não deve conhecer detalhes de implementação, como por exemplo, se o banco de dados utilizado é MongoDB ou MySQL.
Utilizar a Domain como intermediária na Presentation permite que várias camadas de Presentation sejam criadas, sem a necessidade de duplicar lógica entre várias camadas de apresentação.
Também é onde se concentra regras de negócio.
E, quando por exemplo, a aplicação precisar mudar de banco de dados, a Domain Layer permance inalterada, pois essa responsabilidade de conversar com o banco são responsabilidade da proxima camada.

3. Data Layer

Assim como a camada de Presentation é responsável por permitir que nosso sistema interaja com o mundo externo, essa camada também tem esse papel. Mas com a diferença de que ela interage com o que são consideradas as dependencias do sistema. Um sistema de banco de dados, um servidor FTP, um banco de imagens, emails.
Toda essa lógica é responsabilidade da Data Layer.
Assim, a Data Layer não conhece detalhes de implementação da Presentation, e não esta acoplada a regras de negócio também. Ela tem a responsabilidade de integrar com sistemas externos, a mando da Domain Layer.

Jack Of All Trades

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store