Bom pessoal, conforme a gente falou no vídeo anterior, a gente tem diversas categorias e agora a nossa ideia é entender como que essas coisas se aplicam e por onde que a gente começa. E provavelmente você já ouviu falar em algum momento, ou provavelmente é natural você já pensar dessa forma, acredito eu, que é em relação a lei ou camadas toda vez que você vai falar com alguém ou provavelmente quando você está pensando na sua aplicação você falar eu tenho a minha camada camada pra lá camada pra cá agora de onde vem essa história é pra que serve então eu quero começar do começo aqui base fundamento pra você pra ficar cada vez mais claro quando você está pensando nessas coisas tá então primeira coisa que a gente tem que aqui base fundamento pra você pra ficar cada vez mais claro quando você está pensando nessas coisas tá então primeira coisa que a gente tem que pensar quando está falando em lei está falando em separação de camadas está falando no final do dia de separação de responsabilidades a gente está pensando numa forma de abstrair uma parte do sistema em relação a outra parte do sistema para que o sistema em si ele não tenha apenas uma única responsabilidade em todo o código todo misturado se eu conseguir separar responsabilidades do meu sistema é em parte que faça um sentido ou seja camadas vai ficar muito mais fácil eu conseguir olhar pra ele e ver responsabilidades. Mas para isso, eu tenho que conseguir pensar em abstração. Por quê? Porque na hora que uma chamada bate no meu sistema, e essa chamada vai chamar uma camada, eu tenho que saber naquele momento que eu chamando aquela camada, não me interessa o que está por trás dela, o que me interessa é eu fazer a chamada e pegar meu resultado. Então, trabalhar com abstrações cada vez vai gerar muito mais esse nível de separação, mas novamente, como eu sempre falo, quanto maior a abstração, maior a complexidade, mas também conforme mais o acoplamento e menos a abstração, também maior a complexidade. Legal? Então, o que acontece no meio dessa história? Toda vez que a gente acaba falando sobre layering, muitas vezes você vai se deparar com o termo layer, de camada, ou o termo tier. Que também pode parecer como camada também, né? Mas o grande problema daqui é o seguinte, muita gente confunde esses dois conceitos. E pelo fato de gerar um pouco essa confusão, as coisas mudam completamente na hora que, por exemplo, você vai fazer um deploy, na hora que você vai organizar a sua aplicação, na hora que você vai distribuir a sua aplicação e tudo mais. Então é extremamente importante você entender essas diferenças. Agora, um ponto bem interessante para você perceber e a gente começar a partir de algum lugar é o seguinte. Provavelmente o Branas, o Rodrigo Branas, normalmente ele faz muito disso. Ele começa a programar e você vai vendo que parece que o programa dele vai virando um caos, porque ele vai colocando todos os arquivos, todos na mesma pasta. É arquivo de banco de dados,ivo de controller de servidor web é de lógica domínio e tudo ali dentro da mesma pasta mas mesmo que fique tudo dentro da mesma pasta cada arquivo que você abre você vê que ele tem responsabilidade diferente você vê expressividade que esse arquivo acaba tendo e daí começa a fazer sentido mesmo que eles estejam em pastas diferentes. O porquê que isso acontece? Acontece porque o ponto que ele mostra ali é que camadas não são pastas. Pasta é uma separação física. Camada é uma separação lógica. Obviamente que a gente acaba compondo uma separação lógica e física para facilitar toda a sua organização. Mas é importante você entender que existe algo que é de separação lógica da separação física. Se você começa a pensar a partir daí, você começa a pensar de uma forma muito mais organizada na hora que você vai desenhar a sua aplicação, mas também na hora que você vai distribuir a sua aplicação. No próximo vídeo eu quero mostrar isso claramente para você, só para a gente matar esse conceito rapidinho. Beleza? Então vamos lá.