Além dos benefícios, algumas características inerentes ao MVC podem ser encaradas como desvantagens. Desta forma, ao considerar a arquitetura MVC para o seu sistema, estas características devem ser equilibradas com os benefícios:
Você tem mais componentes para construir e manter do que você teria se tivesse projetado o sistema como um monólito. A menos que você precise de flexibilidade na interface do usuário ou nas visões, o MVC pode adicionar mais sobrecarga do que sua aplicação realmente precisa.
XÀ medida que o sistema se torna maior, mais relacionamentos entre modelo e visões existem, e uma mudança em um modelo ou na assinatura da mensagem enviada pelo modelo todas as visões que interagem com ele deverão sofrer manutenção.
XMesmo que os componentes sejam únicos, eles têm relações fortes que limitam a sua capacidade de reutilização de um controlador com a sua visão. À medida que o sistema cresce e evolui, visões são adicionadas ao sistema, juntamente com as consequentes melhorias no controlador que permitirão que as visões possam ser utilizadas e controladas. Uma vez que os componentes são muito dependentes, reutilizar apenas o controlador ou apenas os a visão é mais difícil do que reutilizar o controlador e a visão juntos. Esta característica também limita a sua capacidade de inserir uma nova versão de qualquer um dos componentes, porque a nova versão deve ser adaptada para suportar o componente que não está sendo substituído.
XMudanças no modelo podemexigir mudanças em ambos os outros dois componentes. A utilização de padrões de design, como o Command Processor, evita este forte acoplamento entre o modelo e os demais componentes.
XEste problema é especialmente aparente se a visão tiver que acessar os mesmos dados, sem alteração, com frequência. O desempenho pode ser melhorado através de estratégia de cache de informações pela visão.
XMVC é útil para aumentar a portabilidade. Se a portabilidade não é um requisito essencial, a utilização de um kit de ferramentas de interface pode ser uma solução mais apropriada. Estas duas soluções são incompatíveis porque toolkits que se especializam em, ao criar interfaces de usuário, incluem seu próprio fluxo de controle e seus próprios mecanismos de acesso ao modelo, ao passo que os controladores MVC querem controlar a maneira que a interação do usuário ocorre.
X