Solo he escuchado el término "patrón de diseño" que se usa para el código orientado a objetos, y los patrones de GoF incluyen solo patrones de diseño de OOP, pero los patrones de diseño son soluciones elegantes para problemas de programación comunes, ¿verdad? No hay nada allí que diga que deben limitarse a OOP, ¿verdad?
Me gustaría ver algunos ejemplos de patrones de diseño fuera del ámbito de la programación orientada a objetos. ¿Usted tiene alguna? ¿Existe esto (ningún libro, como el libro GoF, necesariamente debe haber sido escrito, solo debe usarse, eso es suficiente)?
Pueden ser específicos de algunos lenguajes de programación, pero se prefieren los patrones generales (a nivel de paradigma) de otros paradigmas que el orientado a objetos.
fuente
Respuestas:
Eche un vistazo a la serie de patrones de diseño de kernel de Linux. Los artículos están relacionados con un lenguaje no orientado a objetos (C) y creo que están bien escritos:
fuente
En realidad, es una paradoja: uno de los patrones más populares de OO no es ... "Clase".
Debido a que OO se inventó en lenguajes que no son OO, los desarrolladores tuvieron que simularlo (y lo están haciendo incluso ahora), por lo que nació el patrón. LISP y C son ejemplos de esto.
Pero tome mi consejo: no cometa un error común: no use patrones solo porque es genial , necesita razones serias para justificar el uso del patrón (al menos OO).
Tome el patrón de Comando, por ejemplo, aunque es agradable y desacopla a la persona que llama del receptor, no debe usarse a menos que realmente lo necesite, porque las operaciones deben expresarse usando verbos, lo que significa métodos. Y usando comandos en todo el lugar, terminaría con un montón de OO-lambdas completamente descentralizadas;> lo mismo sería cierto para muchas Estrategias.
fuente
El "patrón de diseño" es en realidad un eufemismo para la "solución". Los patrones de diseño se inventaron para evitar fallas y defectos en los idiomas OO . Por ejemplo, tome el patrón iterador que finalmente condujo a la introducción de las colecciones en Java. Groovy se deshizo de muchos más patrones al convertirlos en funciones de lenguaje: ya no necesita el patrón decorador porque puede agregar métodos a las clases existentes en Groovy.
Esto significa que puede encontrar patrones de diseño en todas partes. De hecho, cada "mejor práctica" puede considerarse una forma simple de un patrón de diseño.
fuente
LtU menciona que Jeremy Gibbons está escribiendo un libro sobre patrones en programación funcional. Echa un vistazo al blog Patrones en programación funcional del Sr. Gibbon para ver algunos avances. Tenga en cuenta que recomienda leer sus publicaciones de la más antigua a la más reciente.
Su documento Design Patterns as Higher-Order Datatype-Generic Programs (pdf) modela funcionalmente los patrones Gang of Four: Composite, Iterator, Visitor y Builder. Describe los patrones de programación con ecuaciones recursivas en Origami Programming (pliegues y despliegues).
fuente
Hay patrones de diseño SQL .
Y también existen algunos patrones de diseño funcionales; consulte aquí la escala.
fuente
En lugar de nombrar patrones de diseño que no sean ooo, me gustaría darle algunos ejemplos de libros que tienen muchos patrones de diseño (en ellos, algunos patrones seguirán siendo específicos de OO):
Espero que esto ayude
fuente
En la programación funcional (especialmente Haskell), hay muchos patrones y expresiones idiomáticas que no se asignan muy bien a OOP. Los tipos fantasmas son un ejemplo bien conocido, y puedes encontrar mucho más en la página wiki de haskell en Idioms .
fuente
La programación modular es bastante popular para las bibliotecas numéricas y las aplicaciones pesadas en matemáticas (el software numérico es notoriamente difícil de modelar usando los patrones Orientados a Objetos, principalmente porque es muy poco lo que se puede encapsular).
fuente
Un buen ejemplo de patrones que no son OOP es mi catálogo de patrones favorito absoluto: Patrones Organizacionales de Desarrollo de Software Ágil, de James O. Coplien . Este libro no trata sobre patrones de software, trata sobre personas, un catálogo para crear equipos exitosos. ¡Cada gerente debería leer este libro!
fuente
Me gusta pensar en estructuras de datos como colas, listas enlazadas, árboles, gráficos, etc. como patrones. Definen ciertos patrones para almacenar datos y procesarlos. Pueden parecer primitivos en comparación con los patrones más sofisticados de Gang of Four pero, sin embargo, son patrones. Quiero decir, ¿qué pasaría si alguien implementara una pila como FIFO en lugar de LIFO y viceversa para una cola y los nombrara de otra manera?
fuente