Patrones de diseño
Introducción
Los patrones de diseño son estructuras de programación que ponen solución a problemas comunes a los que los programadores tienen que enfrentarse, es decir, la forma de resolver un problema. Existen muchos tipos de patrones, pero a todos ellos les une unas características comunes para que sean re utilizables por otros programadores.
Características
Las características principales de los patrones de diseño son:
-Estandarizar el lenguaje. A si los programadores pueden entender el código de forma general.
-No centrarse en soluciones a problemas ya resueltos. Con esto se ayuda a mantener un lenguaje limpio y ordenado
-Código reutilizable. Ya que la idea es la de compartir soluciones, al crear un código reutilizable permite que se vuelvan a usar de forma sencilla el código.
Clasificación
Existen muchos tipos de patrones y con el tiempo se ha encontrado un denominante común en ellos. Este denominante es el tipo de problema que resuelvan y gracias a ello se ha podido encontrar una clasificación para los patrones.
Esta clasificación es:
Creacionales: Sirve para resolver los problemas de creación de instancia.
- -Singleton: Restringe la instanciación de una clase o valor de un tipo a un solo objeto.
- -Prototype (prototipo): Clona instancias cogiéndolas de un prototipo
- -Método de Fabricación (Factory Method): Unas subclases constructora que crea la clase a implementar.
Estructurales: Resuelve problemas sobre las estructuras de una clase.
- -Bridge (Puente) Separa la abstracción de la implementación para así modificarlas independientemente.
- -Peso Ligero (Flyweight): Elimina la redundancia o la reduce cuando tenemos gran cantidad de objetos con información idéntica.
- -Facade (Fachada) Provee una interfaz unificada y simple para acceder a un sistema más complejo.
De comportamiento: Ofrece soluciones respecto a la interacción y responsabilidad entre objetos y clases.
- -Intérprete (Interpreter): Nos crea un intérprete de lenguaje para una gramática simple y sencilla.
- -Observer (Observador) Nos notifica y actualiza automaticamente los objetos que dependen de él cuando un objeto cambie de estado.
- -Orden (Command): Crea la peticion en forma de objeto y así podemos tratarla como tal con todas sus ventajas.