O padrão de projetos MVC (Model-View-Controller) tem como objetivo separar lógica de negócios (Model), interface do usuário (View) e o fluxo da aplicação (Control). O padrão MVC usa em sua arquitetura diversos outros padrões de projeto para atingir seu objetivo.

Em MVC, as classes do Model não devem conhecer nada sobre as camadas de interface que exibem suas informações. O padrão de projeto utilizado pelo padrão arquitetural MVC que é responsável por fazer com que o Model informe mudanças em seu estado para as interfaces, sem conhecê-las, é o: