Post on 17-Jul-2015
PATRONES DE DISEÑO
1.- ¿Qué es un Patrón de Diseño?
Son un conjunto de prácticas de óptimo diseño para la búsqueda de soluciones a problemas
comunes en el desarrollo de software y referentes al diseño de interacción o interfaces, es decir
resulta ser una solución a problemas de diseño, entre otras palabras describe las clases y objetos
que se comunican entre sí, para resolver un problema de diseño general o en particular.
2.- ¿Por qué son útiles los Patrones de Diseño?
Porque facilitan el aprendizaje de la solución a dichos problemas a los nuevos diseñadores.
Estandarizan el modo en que se realiza el diseño.
Porque se puede evitar a dar solución a un problema ya conocido y solucionado anteriormente.
Proporcionan catálogos de elementos reusables en el diseño de sistemas software.
3.- ¿Qué tipos de patrones de diseño existen? Explícalos
Patrones de Creación: Se utilizan cuando se deben de crear objetos pero debe de tomarse
decisiones dinámicamente en el proceso de creación. Para ésto lo que se hace es abstraer el
proceso de creación de los objetos para realizar la decisión de qué objetos crear o cómo crearlos
para el momento en que se tenga que hacer. Patrones de creación son: Abstract
Factory, Builder, Factory Method, Object Pool, Prototype y Singleton.
Patrones Estructurales: Describen como utilizar estructuras de datos complejas a partir de
elementos más simples. Sirven para crear las interconexiones entre los distintos objetos y que
estas relaciones no se vean afectadas por cambios en los requisitos del programa. Algunos
ejemplos de Patrones Estructurales son: Adapter, Bridge, Decorator, Facade, Flyweight y Proxy.
Patrones de Comportamiento: Especifican el comportamiento entre objetos del programa, por
ejemplo: Chain of Responsability, Command, Interpreter, Iterator, Mediator, Snapshot, Observer,
State, Strategy, Template Method y Visitor.
4.- ¿Qué problemática es la que intentan solucionar los patrones de diseño?
Resolver los problemas ya conocidos y solucionados con anteriodidad.
Disminuir la capacidad de comprensión de un diseño o de implementación de código
Comunicación sencilla con los demás objetos.
Disminuir el rendimiento de la velocidad de ejecución de una tarea en el proyecto