• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

kingless

MVC design pattern

13 mensagens neste tópico

Há Já algum tempo que tenho ouvido falar muito bem da arquitectura MVC (Model-View-Controller) e por isso comecei a modificar a arquitectura do sistema de componentes do meu CMS para a arquitectura MVC. O que eu quero saber é se já conheciam a arquitectura MVC e se já ou costumam implementar a arquitectura MVC em aplicações e qual é a vossa opinião acerca deste design pattern.

MVC

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Esse padrão é o que é usado por praticamente todas as frameworks php, só conheço uma que não o usa.

A popular framework ruby-on-rails usa este padrão, ficou tudo histerico com isso então desatou tudo a portar as maravilhas do ror para php.

Isso permite alguma estruturação da aplicação mas, a forma como o cóidgo deve ser arrumado deve ir muito para alem das imposições impostas por este padrão.

Agora, uma coisa que muito pessoal ainda não se apercebeu: este padrão não mais é o adequado para todos os tipos de sites.

Há sites que têm funções muito diferentes, alguns nem sequer precisam de recorrer a um modelo de dados, pelo que este padrão se torna inutil nesse caso.

Se recorreres a uma framework dessas que prai andam, acabas por usar este padrão e poupar muito tempo. Agora implementar um só aplicação que siga este padrao pode significar ter muito mais trabalho, para estruturar o código de uma forma que pode ou não ser a mais adequada.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Acabei de implementar a arquitectura MVC no sistema de componentes e estou a gostar da forma fácil e organizada que me permite programar componentes grandes. Acho que fiz bem de implementar esta arquitectura no sistema de componentes porque provavelmente alguns utilizadores do CMS vão querer programar componentes grandes em que terão que fazer varias modificações a interface, gerir dados da base de dados sem afectar a interface, etc e para além  disso os utilizadores vão ter a opção de usar ou não o padrão MVC nos componentes. :D

Pedrotuga obrigado pela tua opinião  :)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Boas,

Como a minha area de programação é mais virada para o flash (actionscript) nunca tive oportunidade de explorar esta arquitectura.Á meses que faço planos para começar a explorar o ruby on rails e alguma framework de php neste modelo. :S

Fui ver o teu link e pareceu-me bastante intuitiva e eficaz, certamente irei usar na proxima oportunidade que tiver um trabalho em que possa aplicar.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Tendo em conta que o que mais uso é Java, MVC é o pão nosso de cada dia.

É a arquitectura mais limpa, fácil de gerir, e que dá menos problemas que conheço, se bem que é mais um padrão aplicacional que um padrão de desenho, mas isso são preciosismos de linguagem :)

Em PHP não tenho por hábito implementar esse tipo de padrão, até porque esse padrão é mais fácil de implementar se usarmos POO, e no caso de PHP, dado que me vejo obrigado a programar para PHP4, o sistema de POO de PHP deixa muito a desejar.

Já vi várias implementações de MVC em PHP e em Ruby, do que vi, o padrão é aplicado de forma um pouco diferente de como se aplica em Java, e em algumas não gostei da forma como era aplicado. Na generalidade, acho o padrão extremamente útil, e até agora não encontrei site, ou sistema nenhum onde não pudesse ser aplicado.

Pode é ser um pouco complicado perceber bem os papéis entre modelo e controlador; controlador e vista.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Eu sinceramente, tive a ler sobre isso mas não percebi nada e para dizer a verdade, nem sei se quero saber... Pelo que me apercebi (posso tar errado), isso não passa de uma certa convenção/modelo/desenho para se fazer determinada coisa, certo?

Eu prefiro pensar por mim e pensar na melhor forma de programar, claro que não sou nenhum guru (longe disso) e o que eu faço pode não ser a melhor forma de abordar o problema, mas com a prática vou lá e quem sabe, se já nalgumas coisas que tenha feito, não usei esse modelo aqui invocado sem eu se quer saber que o estava a usar?

Eu prefiro ser eu a pensar em como organizar o meu código e separar os seus elementos distintos e aprender com os meus erros e depois fazer melhor do que seguir um padrão já existente e já desenvolvido. Apesar de este pelo que falam, ser bom e ser implementado em muito lado, mas como já disse, não percebi praticamente nada do que se trata...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não se trata de uma organização de código, é mais uma forma de separar apresentação de conteúdo, mas neste caso aplicado a software.

De uma forma simples trata-se de separar um software em 3 componentes, o modelo, que representa o software, com todas as suas acções, uma vista que a única coisa que faz é representar o modelo ao utilizador e um controlador que faz a ponte entre modelo e vista.

O caso mais clássico e fácil de perceber é o de uma aplicação que tem uma interface gráfica e uma linha de comandos, o modelo, que representa a aplicação é o mesmo, no entanto possui duas vistas, uma gráfica e outra em linha de comandos. Podes mudar qualquer uma das vistas sem interferir no modelo, podes criar quantas vistas diferentes precisares, ou podes mudar o modelo sem interferires nas vistas que existem.

É um bom modelo, mas pelo que tenho visto, é mal percebido, a primeira vez que o usei fiz uma confusão completa entre modelos, vistas e controladores, o prof de programação 4 esteve quase 3 horas a bater-nos na cabeça :)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O caso mais clássico e fácil de perceber é o de uma aplicação que tem uma interface gráfica e uma linha de comandos, o modelo, que representa a aplicação é o mesmo, no entanto possui duas vistas, uma gráfica e outra em linha de comandos. Podes mudar qualquer uma das vistas sem interferir no modelo, podes criar quantas vistas diferentes precisares, ou podes mudar o modelo sem interferires nas vistas que existem.

Mas este tipo de coisas já eu fazia antes de se quer conhecer esta coisa do MVC... E acho que é algo que qualquer programador com algum experiência (ou com a experiência que vai ganhado pelo caminho) acaba por chegar lá sozinho... Não me parece nada mais nada menos do que uma convenção escrita num documento e com um nome.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Knitter, tenho a impressão que já li sobre isso aqui no forum...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

É provável, sei que já falei sobre padrões de desenho antes, e sobre padrões aplicacionais também, e embora não me lembre de um tópico especifico sei que outros utilizadores, antes de mim, já o tinham feito.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O caso mais clássico e fácil de perceber é o de uma aplicação que tem uma interface gráfica e uma linha de comandos, o modelo, que representa a aplicação é o mesmo, no entanto possui duas vistas, uma gráfica e outra em linha de comandos. Podes mudar qualquer uma das vistas sem interferir no modelo, podes criar quantas vistas diferentes precisares, ou podes mudar o modelo sem interferires nas vistas que existem.

Mas este tipo de coisas já eu fazia antes de se quer conhecer esta coisa do MVC... E acho que é algo que qualquer programador com algum experiência (ou com a experiência que vai ganhado pelo caminho) acaba por chegar lá sozinho... Não me parece nada mais nada menos do que uma convenção escrita num documento e com um nome.

Na verdade é um pouco como dizes. É daquelas coisas que os teóricos usam para se lembrarem daquilo que para os mais talentosos pode ser claro como água.

knitter, pode sempre embrulhar qq aplicação numa casquinha muito fininha de MVC, mas o grosso da aplicação pode, muitas vezes seguir outro padrão.

Mesmo sites, o mvc só é indicado para sites de dimensão média ou grande que apresentem ao utilizadores dados armazenáveis numa base de dados. Basicamente é indicado para aplicações web que dêm conta de conteudos, mas não são todas que fazem isso.

Um motor de sites webhosting por exemplo, é um bom contra-exemplo.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Na verdade, por mais que use o MVC, não vejo grande utilidade em desenvolvimento web geral. Para sites genéricos não o aplicaria, uso bastante em aplicações desktop, por assim dizer.

Mas claro é apenas mais um padrão aplicacional, uma forma de fazer as coisas, existem muitas mais, e todos os padrões têm vantagens e desvantagens, e situações onde se aplicam.

No entanto tenho de discordar quanto a serem coisas de teóricos, muito pelo contrário, os padrões de desenho apareceram porque os programadores viram que para determinados problemas a melhor solução era sempre a mesma, e andavam sempre a "partir pedra" ou "reinventar a roda" como lhe quiserem chamar, porque cada programador, mais depressa ou mais devagar, acabava por chegar à mesma solução. Só começaram a ser conhecidos quando um grupo de programadores resolveu catalogar as soluções tipificadas.

A vantagem em conhecer os padrões é que perdemos menos tempo no desenvolvimento, até porque alguns padrões exigem vários anos de conhecimento e passagem por determinados problemas. Para mim, facilita no sentido em que mais depressa programo a solução para um problema comum, em vez de perder algum tempo a analisar o problema, analisar as soluções, verificar qual a melhor, etc.. Assim, quando identifico um problema que sei que tem uma solução catalogada basta aplicar a solução. Claro que aplicar a solução sem a compreender dá asneira :)

Como tantas outras coisas é mais uma ferramenta de trabalho, para mim, quanto mais ferramentas tiver e conhecer, mas rápido, fácil e melhor será o meu trabalho.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora