Quero saber se existem padrões de design para a Web além do MVC?
Eu sei que existem padrões de design como: Registry, Observer, Factory, ActiveRecord, ... e MVC, um conjunto de outros padrões de design e estrutura de pastas.
Existe padrão de design, como o MVC, é um conjunto de outros padrões de design?
Edit: minha linguagem de programação é PHP.
web-development
php
design-patterns
mvc
Saeed M.
fonte
fonte
Respostas:
Existem diferentes padrões no desenvolvimento de software; MVP, MVVM, MVC, etc. são alguns dos mais conhecidos. No entanto, é necessário definir o problema ou a tecnologia específica que você pretende resolver ou usar.
Cada um desses padrões é bom para resolver alguns conjuntos específicos de problemas. Por exemplo, o padrão MVP (Model View Presenter) ajuda a introduzir a separação de preocupações no desenvolvimento do ASP.NET WebForms. Consiste em dividir as responsabilidades de coletar, exibir e armazenar dados de uma página da Web em objetos separados: um objeto Modelo, um objeto Exibir e um objeto Presenter.
O livro de receitas geral mais famoso dos padrões de design é o Gang of Four (GoF) .
Edit: suponho que você esteja mais interessado em implementar padrões de design na plataforma .NET
fonte
Um bom padrão, que encontrei algumas semanas atrás, é o MOVE . Parece um pouco mais sofisticado que o MVC, mas é baseado no mesmo princípio. Uma desvantagem do MVC é que seus controladores podem ficar muito, muito grandes. Usando o padrão MOVE, você resolverá um pouco esse problema.
Outros padrões, nomeados pelos outros, também são boas alternativas.
fonte
A primeira coisa a estabelecer é o que exatamente você precisa fazer para decidir se uma estrutura e / ou MVC (ou outro padrão de design) seria benéfico.
As estruturas existem para fornecer uma plataforma consistente para o desenvolvimento e, ao mesmo tempo, fornecer soluções para requisitos comuns de programação (como interação com o banco de dados, criação e validação de formulários, autenticação do usuário etc.)
Para PHP, pelo menos, o padrão de design MVC / HMVC tende a dominar as estruturas principais disponíveis (por exemplo , Zend , CakePHP , CodeIgniter etc.), mas existem muitos padrões de design diferentes que se poderia usar.
O MVC é tão popular porque oferece uma maneira estabelecida e compreendida de separar a lógica de modelagem e processamento de dados da camada de visualização / apresentação (algo que é considerado desejável para produzir aplicativos robustos e escalonáveis).
É importante observar (e como foi expresso por @Marjan Venema em um comentário à resposta de @ ElYusubov) que MVC, MVP, MVVM e os outros padrões MV x são (pelo menos no princípio) todos os mesmos 'padrões de design'.
Normalmente, padrões de design diferentes servem (muitas vezes sutilmente) a propósitos diferentes e, em vários casos, foram desenvolvidos com um idioma específico em mente. No entanto, um verdadeiro "padrão de design" não é uma regra rígida e rápida para programação e é realmente mais um entendimento filosófico / idealógico de uma implementação de programas e requisitos de design e funções lógicas.
A pesquisa é a melhor maneira de descobrir sobre diferentes princípios e práticas recomendadas de programação, eis alguns links da Wikipedia para você começar:
Na prática, não há nada que o impeça de implementar seu próprio 'padrão', a IMO é a melhor maneira de aprender, para mim, pelo menos eu não entendi completamente o padrão MVC até começar a tentar escrever um site usando-o.
Depois de entender alguns dos conceitos e práticas recomendadas de programação, você pode usá-los para criar seu próprio sistema para resolver os problemas específicos que você está enfrentando e para atender às suas necessidades, independentemente de estar em conformidade com um 'padrão' estabelecido.
Se você não tiver um conjunto específico de problemas a resolver, aprender uma das estruturas comuns é sua melhor aposta.
fonte
Um dos exemplos mais famosos é o Knockout.js, que é uma estrutura javascript que usa o padrão de design do MVVM . Há um ótimo artigo aqui sobre o estouro de pilha comparando o framework MVC Backbone.js vs Knockout.js .
Uma nota lateral é que o padrão de design MVVM se originou da Microsoft como uma especialização do padrão de design PM de Martin Fowler. O MVVM é usado extensivamente pelos aplicativos WPF.
fonte
Como ElYusubov apontou, a estrutura do ASP.Net há muito tempo possui padrões MVP e MVVM, se você estiver procurando por exemplos relativamente populares. Uma das principais diferenças entre o MVC e o MVVM é como suas entidades são atualizadas; O MVC é mais adequado à abordagem tradicional sem estado ou sem estado de aplicativos da Web. A estrutura do ASP.Net tentou contornar isso, mantendo seu estado incorporado em um formulário (para que pudesse ser restaurado em cada solicitação), o que fazia com que os padrões MVP e MVVM fizessem mais sentido lá.
Com o HTML5, os aplicativos estão se tornando cada vez mais pesados em JavaScript, com grande parte de seu estado no cliente. Isso pode levar a um ressurgimento das estruturas MVVM, e o Knockout JS é um exemplo.
fonte
A maioria dos padrões na natureza são MVC, ou algum tipo de MVC. Afinal, faz sentido dividir seus dados (Model), a representação (View) e a interação com eles (Controller). Se você der uma olhada no MVC, que foi fundado nos anos 80, você descobrirá que nunca foi concebido para ser um framework da web. Assim, eu achei que estava muito sobrecarregado na web.
Um outro padrão bem conhecido seria a Arquitetura Orientada a Serviços (SOA). Com base nisso, uma abordagem moderna seria ter um MVC (ou sabor) em seu servidor, apenas para expor um serviço com o qual você possa trabalhar. No lado do cliente, haveria outro aplicativo com estilo MVC, por exemplo, um aplicativo da Web com HTML5 e JavaScript (Twitter ou Linked In, por exemplo). O aplicativo cliente usaria o serviço do lado do servidor (a "Visualização" do servidor) como seu Modelo. IMHO, isso seria o estado da arte e provavelmente empurrará apenas o MVC do lado do servidor.
fonte
Pessoalmente, estou pensando em implementar algo que use a idéia de Representação de métodos de recurso , embora, neste estágio, seja apenas mais um experimento do que qualquer outra coisa. Ele tem alguns pontos interessantes, na medida em que modela uma solicitação / resposta HTTP melhor que o MVC (que é destinado a aplicativos de longa duração em execução em um único computador, em oposição a sessões de solicitação / resposta de curta duração). No entanto, há a desvantagem de que, se você colocar métodos em seus recursos para lidar com GET, POST, PUT, DELETE etc., seus recursos serão acoplados ao front end. Estou pensando em separar isso em outra camada.
fonte
Existem mais de 1000 modos, exceto o MVC, alguns deles são semelhantes ao MVC e outros totalmente diferentes.
por exemplo :
etc
fonte