Eu só ouvi o termo "padrão de design" ser usado para código orientado a objetos, e os padrões GoF incluem apenas padrões de design OOP, mas padrões de design são soluções elegantes para problemas de programação comuns, certo? Não há nada dizendo que eles devem estar limitados ao POO, existe?
Eu gostaria de ver alguns exemplos de padrões de design fora do domínio da programação orientada a objetos. Voc ~ e tem algum? Será que existe mesmo (nenhum livro, como o GoF, deve necessariamente ter sido escrito, deve ser usado apenas; basta)?
Eles podem ser específicos para algumas linguagens de programação, mas padrões gerais (em nível de paradigma) são preferidos, de outros paradigmas além do orientado a objetos.
design-patterns
Anto
fonte
fonte
Respostas:
Dê uma olhada na série Linux Kernel Design Patterns. Os artigos estão relacionados a uma linguagem não orientada a objetos (C) e acredito que sejam bem escritos:
fonte
Na verdade, é paradoxo - um dos padrões não-OO mais populares é ... "Classe".
Como o OO foi inventado em linguagens não OO, os desenvolvedores tiveram que simular (e estão fazendo isso agora) - então o padrão nasceu. LISP e C são exemplos disso.
Mas siga meu conselho: não cometa erros comuns - não use padrões apenas porque é legal , você precisa de motivos sérios para justificar o uso de padrões (pelo menos os OO).
Tomemos o padrão de comando, por exemplo - embora seja bom e dissocie o chamador do receptor, ele não deve ser usado a menos que você realmente precise disso - porque as operações devem ser expressas usando verbos - o que significa métodos. E usando comandos em todo o lugar, você acabaria com um monte de OO-lambdas completamente descentralizadas -> o mesmo para muitas estratégias.
fonte
"Padrão de design" é na verdade um eufemismo para "solução alternativa". Os padrões de design foram inventados para solucionar deficiências e falhas nos idiomas OO . Por exemplo, considere o padrão do iterador que eventualmente levou à introdução das coleções em Java. O Groovy se livrou de muitos outros padrões convertendo-os em recursos de idioma: Você não precisa mais do padrão decorador porque pode adicionar métodos às classes existentes no Groovy.
Isso significa que você pode encontrar padrões de design em qualquer lugar. De fato, todas as "melhores práticas" podem ser consideradas uma forma simples de um padrão de design.
fonte
LtU menciona que Jeremy Gibbons está escrevendo um livro sobre padrões em programação funcional. Confira o blog Patterns in Functional Programming do Sr. Gibbon para alguns teasers. Observe que ele recomenda ler suas postagens da mais antiga para a mais nova.
Seu artigo Design Patterns como programas genéricos de tipo de dados de ordem superior (pdf) modela funcionalmente os padrões do Gang of Four: Composite, Iterator, Visitor e Builder. Ele descreve os padrões de programação com equações recursivas na Programação de Origami (dobras e desdobram).
fonte
Existem padrões de design SQL .
E alguns padrões de design funcional também existem - veja aqui o scala.
fonte
Em vez de nomear padrões de design que não sejam oo, gostaria de dar alguns exemplos de livros que têm muitos padrões de design (neles, alguns padrões ainda serão específicos de OO):
Espero que isto ajude
fonte
Na programação funcional (especialmente Haskell), existem muitos padrões e expressões que não são muito bem mapeados para o OOP. Os tipos de fantasmas são um exemplo bem conhecido, e você pode encontrar muito mais na página wiki de haskell em Idiomas .
fonte
A programação modular é bastante popular para bibliotecas numéricas e aplicativos pesados em matemática (o software numérico é notoriamente difícil de modelar usando os padrões Orientados a Objetos, principalmente porque há muito pouco que você pode encapsular).
fonte
Um bom exemplo de padrões que não são OOP é o meu catálogo de padrões favoritos absoluto: Padrões Organizacionais de Desenvolvimento Ágil de Software, de James O. Coplien . Este livro não trata de padrões de software, trata-se de pessoas, um catálogo para a criação de equipes de sucesso. Todo gerente deve ler este livro!
fonte
Eu gosto de pensar em estruturas de dados como filas, listas vinculadas, árvores, gráficos etc. como padrões. Eles definem certos padrões para armazenar dados e processá-los. Eles podem parecer primitivos em comparação com os padrões mais sofisticados do Gang of Four, mas ainda assim são padrões. Quero dizer, o que aconteceria se alguém implementasse uma pilha como um FIFO em vez de um LIFO e vice-versa para uma fila e os nomeasse de outra forma?
fonte