¿Qué son los patrones de diseño?

By Vile Editor

Los patrones de diseño permite solucionar problemas comunes de desarrollo

Patrones de diseño

 

Los patrones de diseño tienen la funcionalidad de resolver distintos problemas de forma estandarizada, es decir debe ser reutilizable.

Cada patrón de diseño describe un problema real a la hora del desarrollo y por lo tanto a una solución común.

Existen diferentes tipos de patrones de diseño pero se pueden dividir en tres categorías: creacional, estructural o de comportamiento.

En VileDevelop vamos a contarte de qué va esto:

work, typing, computer

Tipos de patrones de diseño:

 

Patrones creacionales:

 
Los primeros que vamos a conocer son los patrones creacionales.
Corresponden a patrones de diseño de software que solucionan problemas de creación de instancias. Nos ayudan a encapsular y abstraer dicha creación.
Quizá el más conocido en este grupo sea el Modelo Vista Controlador (MVC) este patrón separa las distintas capas del desarrollo de manera que se abarcan de forma individual. La capa controlador se encarga de gestionar la comunicación con la capa Modelo.
Singleton garantiza la existencia de una única instancia para una clase y la creación de un mecanismo de acceso global a dicha instancia.
Prototype se encarga de gestionar instancias clonadas de otra existente.
Otros encontrados en este grupo serían Abstract FactoryBuilder, Factory Method
 

Patrones estructurales:

 

Los patrones estructurales están orientadas para resolver los problemas de agregación de clases y objetos. Podemos encontrar entre los patrones estructurales: 

Adapter o Wrapper: Adapta una interfaz para que pueda ser utilizada por una clase que de otro modo no podría utilizarla.
Bridge: Desacopla una abstracción de su implementación.
Composite: Permite tratar objetos compuestos como si de uno simple se tratase.
Decorator: Añade funcionalidad a una clase dinámicamente.
Facade: Provee de una interfaz unificada simple para acceder a una interfaz o grupo de interfaces de un subsistema.
Flyweight: Reduce la redundancia cuando gran cantidad de objetos poseen idéntica información.
Proxy: Proporciona un intermediario de un objeto para controlar su acceso.
Module: Agrupa varios elementos relacionados, como clases, singletons, y métodos, utilizados globalmente, en una entidad única.
 

Patrones de comportamiento:

 
Ofrecen soluciones respecto a la interacción y responsabilidades entre clases y objetos, así como los algoritmos que encapsulan, entre estos podemos encontrar: 
Chain of Responsibility: Permite establecer la línea que deben llevar los mensajes para que los objetos realicen la tarea indicada.
 
Command: Encapsula una operación en un objeto, permitiendo ejecutar dicha operación sin necesidad de conocer el contenido de la misma.
Interpreter: Dado un lenguaje, define una gramática para dicho lenguaje, así como las herramientas necesarias para interpretarlo.
Iterator: Permite realizar recorridos sobre objetos compuestos independientemente de la implementación de estos.
Mediator: Define un objeto que coordine la comunicación entre objetos de distintas clases, pero que funcionan como un conjunto.
Memento (Recuerdo): Permite volver a estados anteriores del sistema.
Observer: Define una dependencia de uno-a-muchos entre objetos, de forma que cuando un objeto cambie de estado se notifique y actualicen automáticamente todos los objetos que dependen de él.
State: Permite que un objeto modifique su comportamiento cada vez que cambie su estado interno.
Strategy: Permite disponer de varios métodos para resolver un problema y elegir cuál utilizar en tiempo de ejecución.
Template Method: Define en una operación el esqueleto de un algoritmo, delegando en las subclases algunos de sus pasos, esto permite que las subclases redefinan ciertos pasos de un algoritmo sin cambiar su estructura.
Visitor: Permite definir nuevas operaciones sobre una jerarquía de clases sin modificar las clases sobre las que opera.
 
A pesar de esa lista, aún quedan muchos más de los que hablar. ¿Y tú? ¿Cuáles has usado para tus desarrollos? ¿Con qué lenguaje de programación trabajas? ¿Sabías cuales son los lenguajes de programación más usados?
 

Siguientes entradas:

Diseño Web
Esta web utiliza cookies propias para su correcto funcionamiento. Al hacer clic en el botón Aceptar, aceptas el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Más información
Privacidad
×