Ir al contenido

Patrones de Diseño

Los patrones de diseño son soluciones reutilizables, probadas y eficientes a problemas de diseño que se repiten con frecuencia en el desarrollo de software.

  • Un diseño debe adecuarse a requisitos actuales y anticipar problemas futuros.
  • Los expertos no afrontan cada situación partiendo de cero, si no que reutilizan soluciones útiles en el pasado.
  • Los patrones resuelven problemas concretos de diseño y ayudan a lograr soluciones flexibles y reutilizables.
  • Cada patrón nombre, explica y evalua un diseño recurrente en sistemas.
  • Periten lograr rápidamente un bien diseño reutilizando experiencia previa.
  • Ayudan a elegir alternativas que hacen que un sistema sea reutilizable y a evitar las que provocan el efecto contrario.
  • Facilitan la documentación y el mantenimiento de sistema existentes.
ElementoDescripción
NombreDescripción concisa del problema de diseño
ProblemaContexto + situación en la que usar el patrón.
SoluciónEstructura de clases y objetos que resuelve el problema.
ConsecuenciasVentajas, desventajas, y efectos secundarios.

MVC es un patrón de diseño arquitectónico muy usado en interfaces gráficas y aplicaciones web.

ComponenteRol
ModeloContiene los datos y lógica de negocio.
VistaMuestra los datos del modelo al usuario.
ControladorGestiona la entrada del usuario y actualiza el modelo o la vista.

Ventajas:

  • Vista y modelo desacoplados: puedes cambiar el aspecto visual sin tocar la lógica.
  • Puedes anidar vistas o tener múltiples representaciones del mismo modelo.
  • La interacción puede modificarse sin tocar la visualización.
De creaciónEstrucutalesDe comportamiento
ClaseFactory MethodAdapterInterpreter
Template Method
ObjetoAbstract Factory
Builder
Prototype
Singleton
Adapter
Bridge
Composite
Decorator
Facade
Flyweight
Proxy
Chain of Responsibility
Command
Iterator
Mediator
Memento
Observer
State
Strategy
Visitor

Los patrones de diseño ayudan a la:

  • Identificación de los objetos necesarios.
  • Determinación del tamaño de los objetos.
  • Diseñar interfaces limpias y coherentes.
  • Reutilización.
  • Diseñar pensando en la evolución del sistema.

Muchos elementos de un diseño proceden del análisis. Después aparecen clases sin equivalente en el mundo real. Los patrones ayudan a identificar las abstracciones menos obvias.

Los objetos pueden varias en tamaño y en número. ALgunos patrones de diseño describen formas concretas de descomponer un objeto en otras más pequeños.

Se debe restringir el uso de referencias a clases concretas, los objetos deben mantener un conocimiento mutuo limitado. Los patrones de creación aseguran que el sistema se diseñe en términos de interfaces.

  • Herencia: se define en tiempo de compilación, rompe el principio de encapsulación. (Flecha con triangulo blanco)
  • Composición: los enlaces entre objetos se establecen en tiempo de ejecución. Cualquier otro objeto puede ser reemplazado dinámicamente por otro del mismo tipo. El acceso a objetos a través de interfaces no rompe la encapsulación.
  • Principio de DOO: equilibra el uso de la asociación y la generalización como mecanismos complementarios. Facilita la hncia facilita la construcción, pero la composición aporta mayor flexibilidad.
  • Delegación: modo de asociación que suple a la herencia por la cual dos objetos tratan una petición, un objeto receptor delega en su ayudante. Facilita combianción de comportamientos en tiempo de ejecución.