Qual padrão de design você acha que é o mais popular?
Qual padrão de design você acha que é o mais popular?
Respostas:
Tenho certeza de que o mais comum é 'The Big Ball of Mud'. Infelizmente para todos nós.
http://en.wikipedia.org/wiki/Big_ball_of_mud
O MVC e suas variações são definitivamente um dos principais padrões de design.
Se você está falando padrões de design do Gang-of-Four , eu diria Singleton . Esse é realmente um estado de coisas triste - quase como se os programadores ouvissem sobre a magia dos padrões de design e parassem depois do primeiro.
Se você está falando sobre padrões de estilo arquitetural (em outras palavras, padrões de design que abrangem várias classes ou camadas), eu diria MVC . Alguns outros populares são o padrão do repositório e o localizador de serviço .
Observador
Se você já usou um evento. Você usou o Observer.
Decorador
Adicione funcionalidade a um objeto em tempo de execução através da composição. Meu favorito pessoal.
Edit: Também Factory é provavelmente um dos mais comuns.
Fachada
Pense em qualquer interface REST como o Twitter ou as APIs SO. Está escondendo um monte de coisas de back-end que, pelo menos no caso dos twitters, podem ser terrivelmente complexas.
Eu me importo em quais tabelas db @ os tweets de apklusk estão armazenados? E que tem um cache rápido? E que @shemnon tem leitores tão baixos que os tweets sempre ficam sem memória? Essa é a mágica da fachada.
Padrão de Estratégia
Se você já usou injeção de dependência, usou o padrão de estratégia.
Por que ninguém mencionou o iterador ainda? Especialmente com todos os mapas que compõem estruturas de dados complexas ... é o que eu mais uso. Ou estamos falando de padrões que reimplementamos?
Juntamente com a minha resposta anterior, adicionarei uma nova que encontrei hoje de minha besta de um projeto herdado:
Copiar colar
Durante a depuração, deparei-me com um pedaço de código que chamava 2 funções com nomes semelhantes:
if(x)
Func1
else
Func2
Func1 e Func2 tinham os mesmos parâmetros. Peguei-os e diferenciei, e eles são 100% iguais, exceto o Func1 chama Func3 e Func2 chama Func4. Puxei aqueles e os diferenciei. 100% o mesmo, exceto por 1 linha. Portanto, um programador anterior decidiu copiar e colar duas funções aninhadas de 50 linhas, em vez de adicionar um parâmetro flag, a 2 funções particulares usadas em exatamente 1 local. Isso me faz querer chorar.
Falando sobre os padrões de design do Gang-of-Four, não consigo pensar em um programa que não use o padrão Observer. Além disso, como Jaco mencionou, o Singleton também é muito usado, infelizmente, tornou-se um martelo (qualquer programador o usa mesmo que não seja completamente necessário).
$_SESSION
variável PHP .
Intérprete
Raramente implementado, frequentemente usado. XPATH, XSLT, Regex, seletores jQuery, etc.
Estou surpreso que ninguém tenha dito "Construtor" ainda. Ou "Adaptador". Eles provavelmente não são tão exóticos como alguns dos outros mencionados, mas eu os uso o tempo todo. Factory e Abstract Factory também são muito comuns (mas já foram tiradas).
Não acho que esteja listado no GoF, mas uso variações o tempo todo.
No nível de design de software, eu argumentaria que Composite, Strategy e Template (e, em menor extensão, Factory) são os mais amplamente utilizados. Nos últimos dez anos, vimos uma preferência pela composição em vez da herança ao construir nossos sistemas usando um projeto OO. Como resultado, a combinação dos padrões mencionados acima desempenha um papel muito mais importante do que todos os outros da OMI.
Arquitetonicamente, eu defenderia o MVC na empresa e padrões baseados em máquinas de estado no lado incorporado das coisas.