Existe algum padrão de design, exceto o MVC para web?

15

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.

Saeed M.
fonte
Sempre há o padrão BBOM .
zzzzBov
1
@ Mr-Moqadam, por favor dê uma olhada - meta.stackexchange.com/questions/5234/…
Yusubov
Acredito que as respostas abaixo respondem a todas as facetas da sua pergunta. Você poderia aceitar o melhor e ajudar a comunidade.
Arpith
E o padrão de fluxo do FB.
Muhammad Umer
Consulte Exibir primeiro também.
Nawfal

Respostas:

25

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.

insira a descrição da imagem aqui

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) .

insira a descrição da imagem aqui

Edit: suponho que você esteja mais interessado em implementar padrões de design na plataforma .NET

Yusubov
fonte
1
+1, viveremos com o MVC definido como um padrão ou uma técnica que verá em breve ou próximo de seu sucessor?
Independente
6
+1, mas MVP, MVVM e MVC são todas variações do mesmo tema: separar (g) a interface do usuário da lógica do modelo e ter alguns mediadores (controladores, apresentadores) entre eles.
Marjan Venema
2
@ Mr-Moqadam: MVC parece um exagero e complicado no começo. Ele faz o que você deve fazer, separando interface do usuário, lógica e dados. A única coisa certa no desenvolvimento de software é a mudança. E como regra geral; 20% é desenvolvimento, 80% está em manutenção. Nessa perspectiva, o MVC certamente vale o esforço. É também o padrão mais básico para conseguir isso, eu acho.
Bruno Schäpper
3
@ Mr-Moqadam: Não, isso ajuda muito, mesmo se você estiver sozinho. E especialmente em grandes projetos.
Bruno Schäpper
1
@ Mr-Moqadam Quem já disse que o MVC é um padrão de desenvolvimento de equipe? Estou desenvolvendo há muito tempo sozinho usando PHP e MVC. É obrigatório que eu mantenha as coisas em manutenção. Você já tentou usar alguma estrutura PHP?
Songo
7

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.

Jan_V
fonte
Eu pensei que o MVC promoveu o uso de controladores finos ?! Você conhece o ditado "Controladores finos e modelos de gordura"
Songo
É o que acontece, mas, na realidade, os controladores tendem a ficar bem gordos.
Jan_V 26/07/12
2
Isso porque você coloca a lógica de domínio nos controladores, o que não era a intenção do MVC original do tipo Krassner & Pope. Controladores da maneira original são sobre manuseio de entrada, por exemplo. conectar cliques do mouse nas coordenadas (X, Y) em uma operação de modelo (como aumentar a temperatura em um aplicativo de termostato). Dito isto, a maior parte da camada do controlador no sentido MVC é totalmente automatizada e, portanto, invisível para o desenvolvedor de aplicativos em uma estrutura.
Aadaam
é mover-se como fluxo
Muhammad Umer
4

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.

Chris
fonte
3

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.

dodgy_coder
fonte
página não encontrada!
Muhammad Umer
1
@MuhammadUmer Obrigado, atualizei o link. Infelizmente, o StackOverflow excluiu essa pergunta de mais de 1000 pontos. Felizmente, a máquina wayback não possui um sistema de moderação rigoroso.
Dodgy_coder 8/04
Não é de todo surpreso ... espero que todos os sites se sejam assim também.
Muhammad Umer
0

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.

Daniel B
fonte
0

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.

Bruno Schäpper
fonte
0

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.

GordonM
fonte
0

Existem mais de 1000 modos, exceto o MVC, alguns deles são semelhantes ao MVC e outros totalmente diferentes.

por exemplo :

  1. Visualização de modelo-modelo - MTV
  2. Model-view-apresentador - MVP
  3. Modelo hierárquico - visualização - controlador HMVC
  4. Visualização de modelo ViewModel- MVVM

etc

Saurabh Chandra Patel
fonte
1
este não parece oferecer nada substancial sobre pontos feitos e explicado em anteriores 7 respostas
mosquito
esta é a resposta mais simples da pergunta que eu penso.
Saurabh Chandra Patel