<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Pedro Ernesto</title>
    <description>The latest articles on Forem by Pedro Ernesto (@theordep).</description>
    <link>https://forem.com/theordep</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3535829%2Fb21e74f7-7f89-4095-824d-74c5ef3f4b49.png</url>
      <title>Forem: Pedro Ernesto</title>
      <link>https://forem.com/theordep</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/theordep"/>
    <language>en</language>
    <item>
      <title>O Padrão Arquitetural Model-View-Controller</title>
      <dc:creator>Pedro Ernesto</dc:creator>
      <pubDate>Sun, 28 Sep 2025 21:32:07 +0000</pubDate>
      <link>https://forem.com/theordep/o-padrao-arquitetural-model-view-controller-224n</link>
      <guid>https://forem.com/theordep/o-padrao-arquitetural-model-view-controller-224n</guid>
      <description>&lt;p&gt;&lt;strong&gt;1 Introdução&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Uma das coisas mais difíceis em programação é não deixar o código virar uma bagunça, principalmente quando o programa começa a crescer e ficar mais interativo. O código vai virando uma bola de neve e fica difícil de mexer. Pois é, foi pra tentar resolver esse problema, lá no começo das interfaces gráficas, que inventaram o padrão Model-View-Controller, o hoje conhecido, MVC.&lt;/p&gt;

&lt;p&gt;A ideia por trás dele, que hoje a gente acha super normal mas que na época foi algo grande, é a tal da Separação de Preocupações(Separation of Concerns (SoC)) (FOWLER, 2006). A lógica é bem simples na verdade: por que o código que define o que é um produto, ou seja a lógica de negócio, deveria ficar junto com o código que desenha o botão de 'comprar', que é a apresentação? Nesse artigo, a gente vai tentar ir um pouco além da definição técnica do MVC e explorar a ideia original do cara que criou ele, que era quase criar uma ponte entre a cabeça do usuário e o computador (REENSKAUG, 2003).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2 Fundamentação Teórica&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;2.1 Gênese Histórica e a Visão Original&lt;br&gt;
Tudo começou lá em 1979, num lugar chamado Xerox PARC, que era tipo o centro de inovações da época. O cara que inventou o padrão, Trygve Reenskaug, tava trabalhando com uma linguagem chamada Smalltalk e sentiu na pele o problema que era ter o código todo misturado.&lt;/p&gt;

&lt;p&gt;E aqui entra um detalhe que muita gente esquece sobre a intenção original. A meta não era só organizar o código para os programadores, mas fazer o usuário sentir que ele estava, de fato, manipulando os dados diretamente. Uma ideia de intuição e fluidez. Só que, na prática, a versão do MVC que "pegou" e se popularizou com o Smalltalk-80, acabou focando muito mais no benefício técnico da separação, deixando essa ambição mais filosófica um pouco para trás (REENSKAUG, 2003).&lt;/p&gt;

&lt;p&gt;2.2 A Desconstrução da Tríade MVC&lt;br&gt;
Beleza, separar as coisas parece uma boa ideia. Mas na prática, como que o MVC funciona? Ele faz isso usando 3 componentes, cada um faz uma coisa bem específica.&lt;/p&gt;

&lt;p&gt;O Modelo (Model): é basicamente onde a "inteligência" do programa fica. Ele cuida dos dados e de toda a lógica de negócio, como cálculos, validações e regras. É responsabilidade dele interagir com o banco de dados e garantir a integridade das informações. O ponto-chave é que o Modelo é completamente agnóstico em relação à interface; ele não sabe nem se importa como os dados serão exibidos.&lt;br&gt;
A Visão (View): É a face da aplicação, aquilo que o usuário vê. A Visão pega o que o usuário faz, tipo um clique, e avisa o sistema, mas ela mesma não tem lógica de negócio nenhuma, é só pra mostrar as coisas.&lt;br&gt;
O Controlador (Controller): Atuando como o cérebro da operação, ele pega o que a Visão mandou, entende o que é pra fazer e chama o Modelo pra resolver. Depois de um tempo, ele geralmente decide qual vai ser a próxima tela que o usuário vai ver, meio que controlando o fluxo todo.&lt;/p&gt;

&lt;p&gt;2.3 A Dinâmica da Interação&lt;br&gt;
Não adianta nada ter as peças separadas se a conversa entre elas for ruim. O segredo do MVC é como esse fluxo funciona. O ciclo básico é até que simples: o usuário faz algo na Visão, a Visão chama o Controlador, o Controlador manda o Modelo trabalhar nos dados, e o Modelo avisa as Visões que mudou, pra elas se atualizarem na tela.&lt;/p&gt;

&lt;p&gt;E é aqui que muitos desenvolvedores se confundem, porque existem basicamente duas "versões" dessa conversa. No modelo original, das aplicações de desktop, a Visão era mais "ativa" e "curiosa", ela mesma observava o Modelo para saber quando mudar, utilizando o padrão Observer (GAMMA et al., 1995). Já no mundo da web, que é o que a maioria de nós usa hoje, a Visão se tornou "passiva". O Controlador faz todo o trabalho de buscar os dados no Modelo e entregá-los de bandeja para a Visão, o que, no fim, deixa as camadas ainda mais independentes (FOWLER, 2006).&lt;/p&gt;

&lt;p&gt;2.4 Análise Crítica: Forças e Fraquezas&lt;br&gt;
Claro, como toda solução de engenharia, o MVC não é uma bala de prata. Suas vantagens são inegáveis: a separação de conceitos permite que equipes trabalhem em paralelo, facilita a manutenção e o reuso de código, e torna os testes unitários muito mais simples, especialmente na lógica de negócio contida no Modelo.&lt;/p&gt;

&lt;p&gt;Porém, ele também tem suas fraquezas. Para projetos muito pequenos, sua estrutura pode parecer um exagero de complexidade. O maior problema, na minha opinião, é o que o pessoal chama de 'Controller Gordo' (Fat Controller). Isso acontece quando o programa é grande e os desenvolvedores começam a jogar responsabilidade demais no Controller, aí ele vira um monstro de código, super difícil de dar manutenção.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3 Conclusão&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;No fim das contas, o que a gente pode tirar disso tudo? O maior legado do MVC, talvez, nem seja a estrutura em si, mas o costume que ele criou nos desenvolvedores de pensar em camadas, em responsabilidades. E deu certo, tanto que ele saiu dos laboratórios e hoje é a base de frameworks gigantes que todo mundo usa, tipo Laravel, Django e Spring MVC.&lt;/p&gt;

&lt;p&gt;Essa ideia foi tão forte, que depois dele vieram outros padrões, como o MVP e o MVVM, que são basicamente evoluções tentando consertar algumas das suas limitações, principalmente na parte de testes. No final, aprender MVC é menos sobre decorar as regras, e mais sobre pegar essa filosofia de construir as coisas de forma organizada. E isso aí, é um conhecimento que serve pra sempre.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4 Referências Bibliográficas&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;FOWLER, Martin. GUI Architectures. 2006. Disponível em: &lt;a href="https://martinfowler.com/eaaDev/uiArchs.html" rel="noopener noreferrer"&gt;https://martinfowler.com/eaaDev/uiArchs.html&lt;/a&gt;. Acesso em: 21 set. 2025.&lt;br&gt;
GAMMA, E. et al. Design Patterns: Elements of Reusable Object-Oriented Software. Boston: Addison-Wesley, 1995.&lt;br&gt;
REENSKAUG, Trygve. The Model-View-Controller (MVC) Its Past and Present. 2003. Disponível em: &lt;a href="https://folk.universitetetioslo.no/trygver/themes/mvc/mvc-index.html" rel="noopener noreferrer"&gt;https://folk.universitetetioslo.no/trygver/themes/mvc/mvc-index.html&lt;/a&gt;. Acesso em: 23 set. 2025.&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>designpatterns</category>
      <category>architecture</category>
      <category>programming</category>
    </item>
  </channel>
</rss>
